2013-04-09 37 views

Trả lời

7

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.
+0

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

+0

@ 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. –

+0

Điều này có nghĩa là tài liệu không chính xác? – user960567

5

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.

+0

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

+1

@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. –

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