Giả sử tôi có các hội đồng trong GAC với các phiên bản, 1.1.1.5, 1.1.5.1, 1.1.6.2, 1.2.1.1 và 2.1.2.1. Ứng dụng của tôi có tham chiếu đến phiên bản 1.1.3.0. Lắp ráp nào sẽ được khớp vào thời gian chạy? và các quy tắc thực tế cho khớp lắp ráp là gì?Cách phiên bản lắp ráp phù hợp với công trình chính xác?
Trả lời
Nếu tham chiếu của bạn yêu cầu một phiên bản cụ thể, theo mặc định, nó sẽ không thành công khi tải phiên bản, vì phiên bản đó không tồn tại.
Điều này có thể được định cấu hình, tuy nhiên, qua Assembly Binding Redirection. Có nhiều tùy chọn khác nhau về những gì sẽ xảy ra ở đây, bao gồm:
- Tham chiếu có thể nói rằng nó không quan tâm đến phiên bản, trong trường hợp mới nhất được tải.
- Bạn có thể configure your application theo cách bạn chỉ định cách chuyển hướng liên kết.
- Việc lắp ráp trong GAC có thể là setup with a publisher policy chỉ định cách xử lý việc này.
Lắp ráp nào sẽ được khớp vào thời gian chạy?
Không có thông tin nào phù hợp, chương trình của bạn sẽ bị đánh bom.
Tài liệu dành cho phiên bản lớp Phiên bản tổng quát về cách bạn chọn số phiên bản. Và có, bạn thường xem xét thay đổi trong số bản dựng để trở thành một thay đổi không phá vỡ. Và thay đổi trong bản sửa đổi là rủi ro thấp. Những điều bạn xem xét khi bạn chọn [AssemblyFileVersion].
Tuy nhiên, chính sách CLR mặc định không không thực hiện hình thức này giải thích các [AssemblyVersion], nó khăng khăng một chính xác trận đấu. Nó chỉ là hạnh phúc khi nó tìm thấy chính xác cùng một DLL mà bạn biên soạn chương trình của bạn với. Điều này thường không khó đảm bảo. Bạn có thể ghi đè chính sách này và làm cho nó yếu hơn, mặc dù bạn nên luôn luôn suy nghĩ kỹ về điều đó. Có rất lịch sử lâu dài về những thay đổi nhỏ được dự định tốt trong mã nguồn mà chỉ không được thực hiện tốt trong thực tế. Một cái gì đó mà Microsoft biết quá rõ, phải duy trì mã kéo dài cho thập kỷ. Các biện pháp chống lại mặc định chống lại DLL Hell trong CLR khó như một tảng đá. Như họ cần. Ratcheting nó xuống cho bạn.
Có nghĩa là tài liệu tại http://msdn.microsoft.com/en-us/library/system.version.aspx là sai. Tôi đã thử nghiệm điều này trong khuôn khổ 1.1, Nó chọn phiên bản chỉ với major.minor phù hợp. Nó có thay đổi trong 4.0 không? – user960567
@user Tài liệu bạn đã liên kết không mâu thuẫn với câu trả lời này. Phần bạn đang đọc có thể nằm trong phần "Ghi chú", nói về * quy ước *. Đó là chính xác những gì Hans nói ở đây trong đoạn giữa.Và cũng giống như một số lời khuyên chung, nếu bạn quan tâm đến hành vi trong các khung công tác cũ như 1.1, cần được đề cập một cách rõ ràng trong câu hỏi của bạn. Người trả lời sẽ có xu hướng giả định phiên bản hiện tại hoặc phiên bản hiện tại-1. –
- 1. Căn chỉnh số phiên bản lắp ráp với TFS Buildnumber
- 2. lắp ráp Ninject không phù hợp với tham chiếu assembly
- 3. Nhạy cảm với quá trình Deserialization với phiên bản lắp ráp khác nhau
- 4. Lấy Phiên bản Lắp ráp từ AssemblyInfo.cs
- 5. Làm cách nào để có phiên bản lắp ráp?
- 6. Specify công bố phiên bản với dòng lệnh MSBuild như phiên bản lắp ráp của dự án
- 7. Lắp ráp Maven: lắp ráp
- 8. Không thể tải phiên bản lắp ráp cho chân trang
- 9. Lắp ráp tải không hoạt động chính xác
- 10. Làm cho TeamCity tích hợp số xây dựng Subversion vào phiên bản lắp ráp
- 11. Làm thế nào để remap phiên bản lắp ráp
- 12. Lắp ráp chế độ hỗn hợp được xây dựng dựa trên phiên bản 'v1.1.4322'
- 13. Trình tự lắp ráp liên kết COM
- 14. Lắp ráp theo Byte
- 15. ASP.NET Compiler phàn nàn về các phiên bản khung không phù hợp với MiniProfiler
- 16. Cách phiên bản ngữ nghĩa phù hợp với quy trình làm việc git
- 17. có nghĩa là gì? Yêu cầu file nguồn để chính xác phù hợp với phiên bản gốc
- 18. Làm cách nào để phối hợp thông tin phiên bản lắp ráp trong cây của nhiều dự án C#?
- 19. Lịch sử phiên bản phù hợp
- 20. Mã lắp ráp nội tuyến nào là chính xác cho rdtscp?
- 21. Phù hợp với tên công ty không chính xác trong Java
- 22. System.BadImageFormatException: Cách sửa lỗi Phiên bản .NET không phù hợp?
- 23. libtool phiên bản không phù hợp lỗi
- 24. Lắp ráp 'SomeAssembly, sử dụng' System.Web.Mvc, Phiên bản = 4.0.0.0, có phiên bản cao hơn so với phiên bản được tham chiếu 'System.Web.Mvc, Phiên bản 3.0.0.0
- 25. Breeze.js thất bại với Không thể tải tệp hoặc lắp ráp System.Web.Http.OData, Phiên bản = 4.0.0.0
- 26. Lắp ráp đường vòng và lắp ráp GCC (Linux)
- 27. Học lắp ráp ARM
- 28. lắp ráp maven kéo phụ thuộc sai
- 29. Chỉ số phiên bản lắp ráp như một đối số dòng lệnh trong MSBuild
- 30. .NET ClickOnce triển khai và lắp ráp sai được gọi sau phiên bản cập nhật
Bạn có chắc chắn không? vì tài liệu này cho biết, 'Các hội đồng có cùng tên, số lớn và số phiên bản phụ nhưng các bản sửa đổi khác nhau được dự định hoàn toàn có thể thay thế cho nhau' http://msdn.microsoft.com/en-us/library/system.version.aspx – user960567
@ user960567 Tôi đã có lỗi liên kết/tải với thậm chí chỉ số không khớp xây dựng. Đó là ý định, nhưng các tập tin chính sách vẫn cần phải tồn tại. –
Điều này có nghĩa là tài liệu không chính xác? – user960567