2011-06-28 35 views
7

Tôi có một nghi ngờ đơn giản: Tôi có một assembly ngoài mà tôi muốn tham khảo. Tôi có một ứng dụng Asp.Net. Tôi muốn sử dụng hội đồng đó trong ứng dụng Asp.Net của tôi.Hiểu về quản lý tham chiếu assembly ASP.NET trong file Web.config

Tôi thêm tham chiếu và những gì VS làm là chỉ đặt dll của tôi vào thư mục con Bin của trang web của tôi.

Tôi nghĩ rằng VS sẽ sửa đổi tệp web.config của tôi thêm tham chiếu bên ngoài ... Vậy điều đó có xảy ra chỉ khi tham chiếu các hội đồng trong GAC ??? (có ý nghĩa cho rằng các mã thông báo công khai và các phiên bản được yêu cầu).

Thankyou

Trả lời

6

Khi CLR tải lắp ráp của bạn để thực hiện, nó sẽ kiểm tra biểu hiện của hội đồng để xác định những gì phụ thuộc được yêu cầu cho nó để chạy. Nó đi qua một loạt các bước để làm điều này:

  1. Kiểm tra cho đổi hướng - nếu lắp ráp được mạnh mẽ, đặt tên, đầu tiên CLR sẽ kiểm tra cấu hình thích hợp (app.config, web.config, vv) để xem nếu có bất kỳ chuyển hướng ràng buộc nào được chỉ định. Chuyển hướng ràng buộc cho phép CLR nói, nơi tôi phải tải v1.0.0.0, thay vì tải v2.0.0.0. Nếu không có chuyển hướng ràng buộc nào được tìm thấy cho một assembly được đặt tên mạnh, nó sẽ kiểm tra một tệp chính sách trong GAC và nếu không tìm thấy tệp chính sách nào, nó sẽ kiểm tra machine.config. Nếu không có chuyển hướng ràng buộc nào được chỉ định, CLR sẽ sử dụng tên assembly được chỉ định trong tệp kê khai của assembly gọi để nạp assembly.

  2. Kiểm tra để xem nếu lắp ráp đã được nạp - CLR xác định nếu lắp ráp trước đó đã được nạp, nếu nó có, nó sử dụng cùng lắp ráp tải, nếu không nó vẫn tiếp tục ...

  3. Tải lắp ráp từ GAC - Nếu lắp ráp trước đó có thể không được nạp và được đặt tên mạnh, CLR sẽ cố gắng tải cụm từ Bộ đệm lắp ráp toàn cầu.

  4. CodeBase - Nếu CLR vẫn không thể tìm thấy lắp ráp, nó sẽ sử dụng đường dẫn codeBase để thử và định vị cụm.

  5. Probing - Nếu CLR vẫn không thể tìm thấy lắp ráp, nó sẽ kiểm tra đường dẫn thăm dò để lắp ráp. Đường dẫn thăm dò mặc định là đường dẫn cơ sở ứng dụng của AppDomain vào đó các assembly đang được nạp.

(Tất cả được điều chỉnh từ một bài viết tuyệt vời được gọi là Understanding .Net Assemblies and References).

Trong trường hợp ứng dụng web của bạn, CLR vẫn thực hiện tất cả những điều trên, nhưng đường dẫn cơ sở ứng dụng AppDomain là thư mục /bin trong ứng dụng IIS của bạn.

+0

Liên kết bị lỗi nhưng nếu có ai tìm thấy bản sao của bài viết, tôi sẽ quan tâm. – GuiSim

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