2009-10-22 38 views
16

Tôi có giải pháp với 3 dự án (GUI, BL và DAL). Hội đồng DAL được ký kết và triển khai trong GAC.Ưu tiên tải lắp ráp .NET

Khi tôi xây dựng giải pháp, DAL được biên dịch và lắp ráp được đặt trong thư mục bin của dự án chính. Nhưng khi tôi chạy ứng dụng, nó tải phiên bản GAC thay vì phiên bản cục bộ. Tại sao điều này?

Tôi nhận ra rằng vì phiên bản trong GAC không phải là phiên bản mới nhất và một số phương thức bị thiếu, mặc dù nó được biên dịch tốt.

GAC có ưu tiên hơn thư mục bin cục bộ không?

Tks trước

Trả lời

19

Câu trả lời ngắn , GAC được ưu tiên hơn các tệp cục bộ.
đây là một hành vi khác với những gì chúng ta thường sử dụng trong thế giới dll bản địa (không bao gồm một số dll hệ thống mà ở đó luôn được tải từ SYSTEM32 bất kể cái gì).

Tại sao?
Hãy tưởng tượng rằng bạn có nhiều ứng dụng với cùng một assembly ngay bây giờ mà hội đồng có một lỗi làm thế nào để bạn sửa chữa tất cả các ứng dụng của bạn? Thật khó để bắt đầu tìm kiếm tất cả các ứng dụng trên tất cả các trình điều khiển, dễ dàng hơn để triển khai một bản lắp ráp duy nhất cho GAC ans sửa tất cả các ứng dụng cùng một lúc.

Đối với vấn đề của bạn, nếu bạn thay đổi API, bạn cần phải thay đổi phiên bản lắp ráp của hội đồng đó, theo cách này, công cụ kết hợp sẽ nhận phiên bản nằm trong thư mục cục bộ.

+0

Tks cho câu trả lời, đặc biệt cho phần cuối cùng về versioning. – Dante

7

Có kiểm tra GAC ​​trước không. Các quy tắc tải được ghi thành tài liệu here. Để khắc phục sự cố của bạn, bạn nên cập nhật phiên bản lắp ráp khi bạn thay đổi API.

+0

Tks cho liên kết, rất hữu ích! – Dante

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