Tôi cần tải hai phiên bản của cùng một DLL để so sánh kết quả đầu ra của chúng. Tôi giả sử rằng tôi có thể sử dụng AppDomains cho điều này, nhưng tôi cần một số bằng chứng..NET: Tải hai phiên bản của cùng một DLL
Trả lời
Ok, nó thực sự dễ dàng hơn nhiều so với tôi tưởng tượng.
m_Assembly1 = Reflection.Assembly.LoadFile(IO.Path.Combine(System.Environment.CurrentDirectory, "Old Version\Some.dll"))
m_Assembly2 = Reflection.Assembly.LoadFile(IO.Path.Combine(System.Environment.CurrentDirectory, "New Version\Some.dll"))
Console.WriteLine("Old Version: " & m_Assembly1.GetName.Version.ToString)
Console.WriteLine("New Version: " & m_Assembly2.GetName.Version.ToString)
m_OldObject = m_Assembly1.CreateInstance("FullClassName")
m_NewObject = m_Assembly2.CreateInstance("FullClassName")
Từ đây trở đi tôi đã sử dụng kết buộc trễ và/hoặc phản ánh để chạy thử nghiệm của mình.
Kiểm tra Activator.CreateInstance() trên MSDN. Mã mẫu bên trong.
Here là một hướng dẫn để làm điều đó:
extern alias oldVer;
extern alias newVer;
và khi bạn biên dịch:
csc /r:oldVer=Somepath\ClassLibrary.dll /r:newVer=AnotherPath\ClassLibrary.dll program.cs
hoặc trong Visual Studio thay đổi "bí danh" trường trong tab bất động sản tham chiếu dự án của bạn alt text http://www.code-magazine.com/ArticleImage.aspx?QuickID=0507041&Image=Figure%202.bmp
Chúng tôi đã có một số vấn đề với cách tiếp cận này nếu ClassLibrary.dll tham chiếu đến một assembly khác, clr sẽ chỉ giải quyết phiên bản đầu tiên của sự phụ thuộc, phụ thuộc phiên bản thứ hai đã được giải quyết như phiên bản đầu tiên. Chúng tôi đã phải đăng ký AppDomain.ResolveAssembly và làm một số điều khó chịu để khắc phục vấn đề này. –
Khai thác thử nghiệm của tôi đã được viết bằng VB, do đó, tất nhiên đó sẽ phải là một tính năng C# -only. –
- 1. Có thể tải các phiên bản khác nhau của cùng một DLL trong Java không?
- 2. Có thể tải hai phiên bản của thời gian chạy .NET trong cùng một quy trình không?
- 3. Có thể nhiều phiên bản của cùng một (Boost) DLL cùng tồn tại trong cùng một quá trình không?
- 4. Tải các phiên bản khác nhau của cùng một assembly
- 5. DLL phiên bản lỗi
- 6. Hai phiên bản jQuery trên cùng một trang
- 7. Lấy phiên bản tập tin của một dll hoặc exe
- 8. Tải nhiều bản sao của dll trong cùng một quá trình
- 9. Vị trí của Dll của bên thứ ba trong phiên bản Control for .NET Project
- 10. Tạo hai phiên bản - lite và pro - của cùng một ứng dụng
- 11. ASP.net: Tôi có thể có 2 phiên bản khác nhau của cùng một dll/assembly trong thư mục bin không?
- 12. Nhiều phiên bản của JQuery trên cùng một trang
- 13. hai DLL khác nhau với cùng một không gian tên
- 14. Hai phiên bản khác nhau của JQuery trong cùng một trang HTML
- 15. Cách phân biệt hai phiên bản của cùng một đối tượng?
- 16. dll phiên bản được hiển thị trong studio trực quan .Net không phản ánh tệp dll được tham chiếu/phiên bản sản phẩm
- 17. Ứng dụng .Net của tôi có thể tham chiếu hai phiên bản khác nhau của thư viện khung .net không?
- 18. Tham khảo các phiên bản khác nhau của Json.NET dll
- 19. So sánh 2 phiên bản của một assembly .NET?
- 20. Java: Tải động nhiều phiên bản cùng loại
- 21. tải một mô hình phiên bản trước
- 22. Hiệu suất khác biệt giữa phương pháp .NET (trong .dll) và phiên bản phản chiếu
- 23. Tải phiên bản .NET CLR hiện tại khi đang chạy?
- 24. Cách tạo phiên bản dùng thử của phần mềm .NET?
- 25. vcredist_x86.dll và phiên bản 8.0.50727.4053
- 26. Phiên bản có thể tải xuống/duyệt được của mã nguồn .NET Framework?
- 27. Tôi có thể tự động tải và tải lại (các phiên bản khác của cùng một) JAR không?
- 28. Tôi cần phiên bản MSVCR90.dll 9.0.21022.8
- 29. System.BadImageFormatException: Cách sửa lỗi Phiên bản .NET không phù hợp?
- 30. EntityFramework 5 sử dụng phiên bản dll 4.4.0.instead 5.0
Hội đồng bạn muốn so sánh có các tham chiếu khác không? Hội đồng có tên mạnh không? –
Không, hội đồng không có tên mạnh. –
Không, các hội đồng không có tài liệu tham khảo khác. –