2009-01-30 38 views
11

Cách tốt nhất để liệt kê tất cả các hội đồng .NET 2.0 có sẵn là gì?Liệt kê tất cả các hội đồng .NET có sẵn

Ví dụ về danh sách cần thiết là một MS Visual Studio hiển thị khi bạn thực hiện 'Thêm tham chiếu ...' trong tab .NET.

Tôi đã đọc Visual studio sử dụng cấu hình thư mục riêng của nó và GAC khác và .NET instalation khác. Bất kỳ ý tưởng nào về cách tôi có thể biết được thư mục này ở đâu trong máy tính xách tay (một máy tính khác có thể có các cửa sổ được cài đặt trong ổ D: chẳng hạn)?

Từ thông tin được liệt kê, bạn phải có khả năng Assembly.Loadxxxx() nó.

Lưu ý: Cần thực hiện theo chương trình và không sử dụng gacutil chẳng hạn (trừ khi nó cung cấp API C#). Mục tiêu của tất cả điều này là tạo trình chỉnh sửa tập lệnh động tùy chỉnh để bạn hiểu được nhu cầu nhận thông tin này.

Trả lời

-1

Thông tin duy nhất tôi đã tìm thấy trước đó về cùng một vấn đề là this, nhưng tôi không bao giờ có xung quanh để sử dụng thông tin đó.

Từ giao diện của nó, có vẻ hơi cồng kềnh để đi qua một thư mục để tìm tất cả các tệp .DLL, nhưng có lẽ đó là những gì bạn cần làm.

9

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.

+0

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

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