2010-06-04 46 views
5

Sau khi đọc qua bài viết MSDN How the Runtime Locates Assemblies và cũng đọc this, tôi vẫn không chắc về cách các hội đồng được đặt tên yếu được giải quyết khi chạy..Net assembly giải quyết sự nhầm lẫn

Ví dụ: nếu tôi có một tham chiếu đến một số tập tin dll trong dự án của tôi, tôi biên dịch và triển khai, nó sẽ nhận một phiên bản mới của tệp dll được tham chiếu nếu tôi chỉ thay thế tệp cũ thực sự được tham chiếu tại thời gian biên dịch? Có vấn đề gì nếu tham chiếu trong tệp dự án chỉ định phiên bản, vv của hội đồng được tham chiếu?

Bất kỳ ngộ đón

Trả lời

0

Câu trả lời cho câu hỏi của bạn là có chừng nào miễn là bạn có Specific Version thiết lập để False trong các thuộc tính cho tài liệu tham khảo để lắp ráp.

+0

Điều này không chính xác, nó chỉ áp dụng vào thời gian biên dịch. –

1

Nơi tốt nhất mà tôi tìm thấy để tìm hiểu về điều này là trong Grimes Fusion Workshop có thể được tìm thấy here. Nó rất toàn diện trong khi vẫn dễ hiểu.

0

Nếu phiên bản không được đề cập, nó sẽ nhận tham chiếu, nếu phiên bản được đề cập, nó sẽ cố gắng tìm và tải lắp ráp khớp với chữ ký với phiên bản được đề cập. nếu không tìm thấy nó sẽ ném một ngoại lệ. Để giải quyết điều này, bạn có thể làm chuyển hướng ràng buộc lắp ráp.

2

Nếu hội đồng không được tìm thấy trong GAC thì CLR sẽ tìm kiếm nó trong "đường dẫn thăm dò". Mà theo mặc định chỉ là thư mục chứa EXE. Nó chỉ tìm kiếm một trận đấu trên tên assembly và sẽ ngừng tìm kiếm trong trận đấu đầu tiên.

Sau đó, kiểm tra số [AssemblyVersion]. Nếu nó không phù hợp bạn sẽ nhận được một ngoại lệ, nó sẽ không tiếp tục tìm kiếm một hội đồng khác có cùng tên. Bất cứ khi nào bạn gặp sự cố về độ phân giải, bạn sẽ muốn sử dụng tiện ích Fuslogvw.exe. Nó cho bạn thấy chính xác nơi CLR nhìn và những gì đã đi sai.

+0

Tham chiếu yếu có làm phiền với số phiên bản không? Kinh nghiệm của tôi là nó chỉ phù hợp với tên nếu bạn đang ở trong con đường thăm dò (không chắc chắn về GAC, nhưng sau đó nó sẽ không được yếu). –

+1

Cho dù đó là tên mạnh mẽ hay không không quan trọng. Chỉ GAC mới có khả năng giải quyết hội đồng được tham chiếu theo số phiên bản. Chỉ tìm kiếm đường dẫn chỉ được thực hiện theo tên, số phiên bản vẫn được kiểm tra sau khi tìm thấy một hội đồng. –