2008-08-29 21 views
19

我有一個需要註冊到GAC的完整dll目錄。我想避免顯式註冊每個文件 - 但看起來gacutil沒有「註冊目錄」選項。任何人都有快速/簡單的解決方案?在Vista中向GAC註冊多個組件

回答

34

GACUTIL不註冊DLL - 不在「COM」意義上。與COM不同,GACUTIL將文件複製到%SYSTEMROOT%\ assembly下的不透明目錄中,這是它們從哪裏運行。要求GACUTIL「註冊一個文件夾」是沒有意義的(不是你可以用RegSvr32來做到這一點)。

您可以使用批處理FOR命令如:

FOR %a IN (C:\MyFolderWithAssemblies\*.dll) DO GACUTIL /i %a 

如果您放置在一個批處理文件,則必須將其替換%一%%一個

+0

很好用!對於卸載,您可以使用:FOR%a IN(C:\ MyFolderWithAssemblies \ *。dll)DO GACUTIL/uf%〜na – 2016-08-04 12:15:54

11

這裏是腳本,你會放轉換爲批處理文件以使用Gacutil註冊當前目錄中的所有文件。您不需要將其放入批處理文件(您可以將其複製/粘貼到命令提示符)來執行此操作。

FOR %1 IN (*) DO Gacutil /i %1 

編輯:Bah,對不起,我遲到了。當我發佈我的時候,我沒有看到以前的帖子。

2

使用

GACUTIL/IL YourPathTo_A_TextFile.txt

開關,如果你有多個不同的文件夾的DLL。否則,請使用Euro提到的for ... in循環。

該文本文件應包含應該安裝的程序集路徑列表(每行一個路徑)。系統中的路徑也可以是不同的文件夾。 以管理員身份運行命令行!

這裏YourPathTo_A_TextFile.txt的示例:

C:\ ... Microsoft.Practices.EnterpriseLibrary.Common.dll C:\ ... Microsoft.Practices.EnterpriseLibrary.Configuration C:\ ... Microsoft.Practices.EnterpriseLibrary.Configuration.Design.HostAdapterV5.dll C:\ ... Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll C:\ .. \ Microsoft.Practices.EnterpriseLibrary.Configuration.DesignTime.dll C:\ .. .Microsoft.Practices.EnterpriseLibrary.Configuration.EnvironmentalOverrides.dll C:\ ... Microsoft.Practices.EnterpriseLibrary.Data.dll

+0

Enterprise Library = Ultimate DLL hell – 2015-08-14 13:35:57