Tại sao các chuyển hướng ràng buộc cần thiết ở tất cả? Giả sử bạn có ứng dụng A tham chiếu thư viện B và thư viện C phiên bản 1.1.2.5. Thư viện B lần lượt cũng tham chiếu thư viện C, nhưng phiên bản 1.1.1.0. Bây giờ chúng tôi có một cuộc xung đột, bởi vì bạn không thể tải các phiên bản khác nhau của cùng một cụm khi chạy. Để giải quyết xung đột này, bạn có thể sử dụng chuyển hướng ràng buộc, thường là phiên bản mới (nhưng cũng có thể là phiên bản cũ). Bạn làm điều đó bằng cách thêm phần sau vào tệp app.config của ứng dụng A, trong configuration > runtime > assemblyBinding
phần (xem ở đây để biết ví dụ về tệp cấu hình đầy đủ):
<dependentAssembly>
<assemblyIdentity name="C"
publicKeyToken="32ab4ba45e0a69a1"
culture="en-us" />
<bindingRedirect oldVersion="1.1.1.0" newVersion="1.1.2.5" />
</dependentAssembly>
Bạn cũng có thể chỉ định một loạt các phiên bản để ánh xạ:
<bindingRedirect oldVersion="0.0.0.0-1.1.1.0" newVersion="1.1.2.5" />
Bây giờ thư viện B, được biên dịch với tham chiếu đến C của phiên bản 1.1.1.0 sẽ sử dụng C của phiên bản 1.1.2.5 khi chạy. Tất nhiên, bạn nên đảm bảo rằng thư viện C tương thích ngược hoặc điều này có thể dẫn đến kết quả không mong muốn.
Bạn có thể chuyển hướng bất kỳ phiên bản nào của thư viện, không chỉ các phiên bản chính.
oldVersion="0.0.0.0-4.1.0.0" newVersion="4.1.0.0"