2009-05-05 5 views

Trả lời

17

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.

+0

Có liên quan gì đến bảo mật không? – codeulike

+0

@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

+5

Đây là lý do tại sao GAC là xấu xa, trong cuốn sách của tôi. – Benjol

2

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.

+1

Đ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

+0

Thật vậy, làm rõ câu trả lời một chút để phản ánh điều này –

1

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]).