2009-01-30 16 views
11

列出所有可用的.NET 2.0程序集的最佳方法是什麼?列出所有可用的.NET程序集

所需列表的一個示例是當您在「.NET」選項卡中執行「添加引用...」時MS Visual Studio顯示的一個示例。

我已閱讀Visual Studio使用自己的目錄配置和GAC另一個.NET安裝。任何關於如何知道這些目錄是以計算機可移植方式存在的想法(例如,另一臺計算機可能在D:驅動器中安裝了Windows)?

從列出的信息中必須有可能Assembly.Loadxxxx()它。

注意:它應該以編程方式完成,例如不使用gacutil(除非它提供了C#API)。所有這些的目標是創建一個自定義的動態腳本編輯器,以便您瞭解需要獲取此信息的需求。

回答

-1

我之前發現的關於同一問題的唯一信息是this,但我從來沒有注意過使用該信息。

從外觀來看,遍歷目錄來查找所有.DLL文件看起來有點麻煩,但也許這就是你需要做的。

9

首先,GAC中的引用程序集和程序集之間存在重要區別。爲了編譯代碼,你需要一個引用程序集。要運行代碼,您需要在.exe所在的文件夾或GAC中的程序集的相同文件夾中有一個程序集副本。

通常,當您安裝.NET應用程序時,其安裝程序將複製它在GAC中使用的程序集。那些程序集是而不是可用作參考程序集,您無法找到它存儲在哪個文件夾中,因此您無法告訴編譯器其/ reference參數的適當值。那麼,你可以找出答案,但是微軟試圖用一個shell插件儘可能地使它變得更加困難。

當您安裝允許您在自己的程序中使用其程序集的.NET應用程序時,會發生不同的事情。像.NET框架一樣。它將製作每個組件的兩個副本。一個進入GAC,另一個進入「知名」位置。對於.NET框架,這些衆所周知的位置是c:\ windows \ microsoft.net \和c:\ program files \ reference程序集。後者文件夾開始被.NET 3.0及更高版本使用。

Visual Studio的「添加引用」對話框使用列出這些衆所周知的位置的註冊表項。有幾個,但重要的是HKLM\Software\Microsoft\.NETFramework\AssemblyFolders

長話短說:您可以使用該註冊表項來生成「添加引用」對話框生成的相同列表。但它不是100%可靠的,你可能會錯過某些產品複製到別處的引用程序集。您必須使用VS中的瀏覽選項卡來添加對這些參考的引用。並搜索整個磁盤以找到他們自己。

+0

剛剛在您的答案中嘗試了最後一點,但沒有奏效。 `System.dll`例如不包含在`HKLM \ Software \ Microsoft \ .NETFramework \ AssemblyFolders`中的任何路徑中 – GETah 2013-01-13 08:42:24

相關問題