Đó là sự hiểu biết của tôi rằng thời gian chạy .NET sẽ luôn tìm kiếm các assembly được tham chiếu trong GAC trước và sau đó trong các thư mục cục bộ. Có một cài đặt trong Web.Config có thể đảo ngược thứ tự này không?Làm thế nào để có được .NET để tìm các assembly trong các thư mục cục bộ đầu tiên thay vì GAC?
Trả lời
No. Không thể đạt được điều này. Nếu một DLL có phiên bản tương đương với một phiên bản được tham chiếu trong chương trình của bạn tồn tại trong GAC thì CLR sẽ luôn luôn chọn cái này. Không có cách nào để ghi đè hành vi này.
Tôi không chắc liệu có thứ gì sẽ thực sự đảo ngược thứ tự tìm kiếm như vậy hay không, nhưng tùy thuộc vào yêu cầu của bạn mà bạn có thể muốn xem xét assembly binding redirection mang lại cho bạn khá nhiều quyền kiểm soát phiên bản nào của hội đồng được tải.
Điều này sẽ thay đổi phiên bản bạn ràng buộc. Tuy nhiên phiên bản bạn chọn sẽ vẫn phải tuân thủ các quy tắc GAC mà tôi đã đề cập. – JaredPar
Thật vậy, làm rõ câu trả lời một chút để phản ánh điều này –
Thông tin thêm. làm việc xung quanh trong this SO thread.
JaredPar là đúng - GAC sẽ luôn là số được bỏ phiếu trước để lắp ráp. Tuy nhiên, nếu bạn giống như tôi, và muốn có DLL sống trong GAC và vẫn còn gỡ lỗi, bạn có thể thêm một kịch bản xây dựng để kết xuất tệp .pdb của bạn cùng một thư mục với assembly trong GAC (nó sẽ ở trong C: \ windows \ assembly \ gac_msil \ assembly.name_ [mã thông báo khóa công khai]).
Có liên quan gì đến bảo mật không? – codeulike
@codeulike, tôi tin rằng nó có nhiều hơn để làm với dịch vụ. Tôi biết ít hơn về lý do tại sao và nhiều hơn nữa về khả năng làm như vậy bởi vì tôi đã dành rất nhiều thời gian để phá hoại hành vi này trước khi nhận ra nó đơn giản là không thể. – JaredPar
Đây là lý do tại sao GAC là xấu xa, trong cuốn sách của tôi. – Benjol