2009-06-05 26 views
6

Tôi có một vài cụm Net, cùng một phiên bản, tên file giống nhau, nhưng nằm ở vị trí khác nhau vị trí:The Order of Assemblies Được Loaded

  1. thư mục Program
  2. C: \ Windows
  3. C: \ Windows \ system32
  4. GAC

Bây giờ, lắp ráp vị trí nào sẽ được tải trước?

Trả lời

4

Net hội có trật tự tìm kiếm khác nhau hơn so với các cửa sổ thường xuyên .dll. GAC sẽ được kiểm tra điều đầu tiên CHỈ nếu lắp ráp được ký tên mạnh mẽ. Nếu assembly không có tên gac/not strong, thì thư mục cục bộ sẽ được kiểm tra sau đó. Đó là kết thúc của thứ tự tìm kiếm assembly .net, 1,2 và 3 ở trên không được kiểm tra.

bạn có thể thay đổi vị trí .net tìm kiếm lắp ráp bằng cách có tệp cấu hình cục bộ cho ứng dụng của bạn.

Ngoài ra, this post in the microsoft.public.dotnet.framework.aspnet group chứa thông tin rất hữu ích.

+1

Có thể đáng cập nhật điều này với tra cứu 'ProbingPath' – GETah

+0

"được ký tên mạnh mẽ" có nghĩa là bạn đã đặt tên VÀ ký tên mạnh mẽ không? – user145400

0

C: \ Windows và C: \ Windows \ System32 không phù hợp với việc thăm dò lắp ráp được quản lý. Khung sẽ không tìm kiếm các hội đồng ở đó.

Nó trông giống đầu tiên trong GAC/Application Folder và sau đó trong các thư mục trỏ đến bởi các thiết lập codebase/privatepath nếu được chỉ định trong file app.config. (Chỉ có các hội đồng có tên mạnh mới có thể được đặt trong GAC.) Trong khi thăm dò nó kiểm tra nhiều kết hợp bằng cách gắn thêm .dll hoặc .exe, tìm trong các thư mục có tên assembly.exe/.dll, tìm kiếm hội đồng được nhắm mục tiêu cho các nền văn hóa cụ thể nếu cần .

Một công cụ tốt để xem những thư mục nào mà thời gian chạy được kiểm tra cho các lỗi phân giải lắp ráp là Fusion Log Viewer. Nhập 'fuslogvw' tại dấu nhắc lệnh VS. Nó hiển thị các mục được khóa bởi ApplicationName và Tên