Trước hết, có sự khác biệt quan trọng giữa các hội đồng tham chiếu và hội đồng trong GAC. Để biên dịch mã, bạn cần một assembly tham chiếu. Để chạy mã, bạn cần một bản sao của assembly trong cùng thư mục với tệp .exe hoặc assembly trong GAC.
Thông thường, khi bạn cài đặt ứng dụng .NET, trình cài đặt của nó sẽ sao chép các assembly mà nó sử dụng trong GAC. Các assembly đó là không phải là có thể sử dụng như các assembly tham chiếu, bạn không thể tìm ra thư mục nào được lưu trữ để bạn không thể cho trình biên dịch biết giá trị thích hợp của tham số dòng lệnh/tham chiếu của nó. Vâng, bạn có thể tìm hiểu nhưng Microsoft đã cố gắng để làm cho nó càng khó càng tốt với một add-in shell.
Điều gì đó khác xảy ra khi bạn cài đặt ứng dụng .NET cho phép bạn sử dụng các hội đồng của nó trong chương trình của riêng bạn. Giống như khung công tác .NET. Nó sẽ tạo ra hai bản sao của mỗi hội đồng. Một người đi vào GAC, người kia đi vào một địa điểm "nổi tiếng". Đối với khung công tác .NET, các vị trí nổi tiếng này là c: \ windows \ microsoft.net \ và c: \ program files \ reference assemblies. Thư mục thứ hai bắt đầu được sử dụng bởi .NET 3.0 trở lên.
Hộp thoại Thêm tham chiếu của Visual Studio sử dụng khóa đăng ký liệt kê các vị trí nổi tiếng này. Có một cặp vợ chồng, nhưng điều quan trọng là HKLM\Software\Microsoft\.NETFramework\AssemblyFolders
.
Ngắn câu chuyện ngắn: bạn có thể sử dụng khóa đăng ký đó để tạo cùng một danh sách mà hộp thoại Thêm tham chiếu tạo ra. Nhưng nó không phải là 100% đáng tin cậy, bạn có thể bỏ lỡ hội đồng tham khảo mà một số sản phẩm sao chép ở một nơi khác. Bạn sẽ phải sử dụng tab Duyệt trong VS để thêm tham chiếu vào các tab đó. Và tìm kiếm toàn bộ đĩa để tìm chúng.
Nguồn
2009-01-30 19:50:11
Chỉ cần thử điểm cuối cùng trong câu trả lời của bạn và không hoạt động. 'System.dll' là ví dụ không được bao gồm trong bất kỳ đường dẫn nào được tìm thấy tại' HKLM \ Software \ Microsoft \ .NETFramework \ AssemblyFolders' – GETah