2011-05-07 21 views
8

Vì vậy, tôi có một bên thứ 3 .dll được viết bằng C# 2.0 cần được nhập mạnh và tôi không có quyền truy cập vào mã nguồn. Tôi đã tìm thấy một số bài viết về cách tháo gỡ .dll và lắp ráp lại nó bằng một tệp khóa mạnh có tên.Đặt tên mạnh cho bên thứ 3 2.0 .dll với VS 2010 Ilasm.exe

Sự cố tôi gặp phải là VS2010 biên dịch lại dưới dạng tệp .NET 4.0 .dll thay vì 2.0 .dll (phiên bản mà ứng dụng của chúng tôi hiện đang sử dụng). Tôi không thể bao gồm dll "mới" trong dự án của tôi bởi vì nó mang lại cho tôi một lỗi thời gian chạy: "Hội đồng này được xây dựng bởi một thời gian chạy mới hơn thời gian chạy hiện tại được nạp và không thể tải được." Nếu tôi không ký tên vào dll, tôi sẽ nhận được "assembly không được gõ mạnh". lỗi.

Có cách nào để biên dịch lại tệp .dll này trong khung 2.0 bằng cách sử dụng VS2010 ilasm.exe không?

Trả lời

13

Bạn có lẽ bằng cách sử dụng Visual Studio 2010 Command Prompt. Nó sẽ thiết lập môi trường để chạy C: \ Windows \ Microsoft.NET \ Framework \ v4.0.30319 \ ilasm.exe khi bạn gõ "ilasm.exe". Phiên bản sai, bạn muốn v2.0.50727 \ ilasm.exe. Nhập tên đầy đủ. Hoặc sao chép và chỉnh sửa vc \ bin \ vsvarsall.bat

1

Không, bạn không thể sử dụng 4.0 ilasm để biên dịch thành 2.0; bạn nên sử dụng ilasm.exe từ thư mục khung 2.0; ví dụ: C:\WINDOWS\Microsoft.NET\Framework\v2.0.50727.

Lưu ý rằng tất cả các bạn nên cần cho điều này là thời gian chạy, chứ không phải SDK hoặc VS 2005/2008.

Các vấn đề liên quan