Gacutil.exe (全域組件快取工具)

更新:2011 年 4 月

全域組件快取工具可以讓您檢視和操作全域組件快取和下載快取的內容。

這個工具會自動隨 Visual Studio 和 Windows SDK 一起安裝。 若要執行工具,建議您使用 Visual Studio 命令提示字元或 Windows SDK 命令提示字元。 這些公司可讓您輕鬆地執行工具,而不需瀏覽至安裝資料夾。 如需詳細資訊,請參閱Visual Studio 和 Windows SDK 命令提示字元

  • 如果您已經在電腦上安裝 Visual Studio:在工作列上,依序按一下 Start、All Programs、Visual Studio、Visual Studio Tools,然後按一下 Visual Studio Command Prompt。

    -或-

    如果您已經在電腦上安裝 Windows SDK:在工作列上,依序按一下 Start、All Programs、Windows SDK 的資料夾,然後按一下Command Prompt(或 CMD Shell)。

  • 在命令提示字元中輸入下列文字:

gacutil [options] [assemblyName | assemblyPath | assemblyListFile]

參數

引數

描述

assemblyName

組件的名稱。 您可以提供如 myAssembly 的部分指定組件名稱,或如 myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5 的完整指定組件名稱。

assemblyPath

含有組件資訊清單 (Assembly Manifest) 的檔案名稱。

assemblyListFile

列出要安裝或解除安裝之組件的 ANSI 文字檔路徑。 若要使用文字檔安裝組件,請在檔案的個別行上指定每個組件的路徑。 這個工具會解譯相對路徑 (相對於 assemblyListFile 的位置)。 若要使用文字檔來解除安裝組件,請在檔案的個別行上為每個組件指定完整的組件名稱。 請參閱本主題稍後的 assemblyListFile 內容範例。

選項

描述

/cdl

刪除下載快取的內容。

/f

請使用 /i/il 選項指定這個選項,以強制進行組件的重新安裝。 如果具有相同名稱的組件已存在於全域組件快取中,則這個工具會覆寫它。

/h[elp]

顯示工具的命令語法和選項。

/i assemblyPath

將組件安裝到全域組件快取。

/if assemblyPath

將組件安裝到全域組件快取。 如果具有相同名稱的組件已存在於全域組件快取中,則這個工具會覆寫它。

指定這個選項相當於同時指定 /i/f 選項。

/il assemblyListFile

assemblyListFile 中指定的一或多個組件安裝到全域組件快取中。

/ir assemblyPath

scheme

id

description

將組件安裝到全域組件快取中,並新增參考以計數組件。 您必須使用這個選項指定 assemblyPathschemeid、 和 description 參數。 如需可以為這些參數指定之有效值的描述,請參閱 /r 選項。

指定這個選項相當於同時指定 /i/r 選項。

/l [assemblyName]

列出全域組件快取的內容。 如果您指定 assemblyName 參數,這個工具只會列出符合該名稱的組件。

/ldl

列出已下載之檔案快取的內容。

/lr [assemblyName]

列出所有組件及其對應的參考計數。 如果您指定 assemblyName 參數,這個工具只會列出符合該名稱的組件及其對應的參考計數。

/nologo

隱藏 Microsoft 程式啟始資訊顯示。

/r [assemblyName | assemblyPath]

scheme

id

description

指定要安裝或解除安裝之組件的追蹤參考。 請使用 /i/il/u/ul 選項指定這個選項。

若要安裝組件,請使用這個選項指定 assemblyPathschemeid、及 description 參數。 若要解除安裝組件,請指定 assemblyNameschemeiddescription 參數。

若要移除組件的參考,您必須指定安裝組件時使用 /i/r (或 /ir) 選項指定的相同 schemeiddescription 參數。 如果您正在解除安裝組件並且這個組件是最後要移除的參考,且 Windows Installer 沒有這個組件的未解決參考,這個工具也會從全域組件快取中移除這個組件。

scheme 參數指定安裝配置的類型。 您可以指定下列其中一個值:

  • UNINSTALL_KEY:如果安裝程式將應用程式加入至 Microsoft Windows 中的 [新增或移除程式],則指定這個值。 應用程式會將一個登錄機碼 (Registry Key) 加入至 HKLM\Software\Microsoft\Windows\CurrentVersion,以將其本身加入至 [新增或移除程式] 中。

  • FILEPATH:如果安裝程式沒有將應用程式加入至 [新增或移除程式] 中,則指定這個值。

  • OPAQUE:如果提供登錄機碼或檔案路徑不適用於您的安裝案例,則指定這個值。 這個值允許您對 id 參數指定自訂資訊。

要對 id 參數指定的值取決於對 scheme 參數指定的值:

  • 如果您對 scheme 參數指定 UNINSTALL_KEY,請在 HKLM\Software\Microsoft\Windows\CurrentVersion 登錄機碼中指定應用程式集的名稱。 例如,如果登錄機碼是 HKLM\Software\Microsoft\Windows\CurrentVersion\MyApp,請對 id 參數指定 MyApp。

  • 如果您對 scheme 參數指定 FILEPATH,請將安裝組件之可執行檔的完整路徑指定為 id 參數。

  • 如果您對 scheme 參數指定 OPAQUE,則可以提供任何資料片段做為 id 參數。 您所指定的資料必須包含在引號 ("") 中。

description 參數允許您指定與要安裝之應用程式有關的描述文字。 這項資訊會在列舉參考時顯示。

/silent

隱藏所有輸出的顯示。

/u assemblyName

從全域組件快取中移除組件。

/uf assemblyName

移除組件的所有參考,強制解除安裝指定的組件。

指定這個選項相當於同時指定 /u/f 選項。

注意事項注意事項
您無法使用這個選項移除使用 Microsoft Windows Installer 所安裝的組件。如果您嘗試這項作業,工具就會顯示錯誤訊息。

/ul assemblyListFile

從全域組件快取中解除安裝 assemblyListFile 中指定的一或多個組件。

/u[ngen] assemblyName

從全域組件快取解除安裝指定的組件。 如果指定的組件具有現存的參考計數,工具就會顯示參考計數,並且不會從全域組件快取中移除組件。

注意事項注意事項
在 .NET Framework 2.0 版中,不支援 /ungen。使用Ngen.exe (原生映像產生器) 的 uninstall 命令代替。

在 .NET Framework 1.0 和 1.1 版中,指定 /ungen 會使 Gacutil.exe 移除原生映像快取中的組件。 這個快取儲存了使用Ngen.exe (原生映像產生器) 建立之組件的原生映像。

/ur assemblyName

scheme

id

description

從全域組件快取解除安裝指定組件的參考。 若要移除組件的參考,您必須指定安裝組件時使用 /i/r (或 /ir) 選項指定的相同 schemeiddescription 參數。 如需可以為這些參數指定之有效值的描述,請參閱 /r 選項。

指定這個選項相當於同時指定 /u/r 選項。

/?

顯示工具的命令語法和選項。

備註

這個工具提供許多和 Windows Shell Extension (Shfusion.dll) 一樣的檢視快取功能,不過更適用於建置 (Build) 指令碼、Makefile 和批次 (Batch) 檔。

注意事項注意事項

您必須擁有系統管理員權限才能使用 Gacutil.exe。

Gacutil.exe 特別可以讓您將組件安裝到快取、從快取中將它們移除,以及列出快取的內容。

Gacutil.exe 提供的選項所支援的參考計數,與 Windows Installer 所支援之參考計數配置相似。 您可以使用 Gacutil.exe 安裝兩個安裝相同組件的應用程式﹔這個工具會追蹤組件的參考數量。 因此,組件會保留在電腦上,直到兩個應用程式都解除安裝為止。 如果您使用 Gacutil.exe 進行實際的產品安裝,請使用支援參考計數的選項。 請同時使用 /i/r 選項安裝組件,並加入要對組件計數的參考。 請同時使用 /u/r 選項移除組件的參考計數。 請注意,單獨使用 /i/u 選項並不支援參考計數。 這些選項適用於產品開發期間,但不適用於實際產品安裝。

請使用 /il/ul 選項,安裝或解除安裝存放在 ANSI 文字檔中的組件清單。 文字檔的內容必須被正確格式化。 若要使用文字檔安裝組件,請在檔案的個別行上指定每個組件的路徑。 下列範例說明包含要安裝之組件的檔案內容。

myAssembly1.dll
myAssembly2.dll
myAssembly3.dll

若要使用文字檔來解除安裝組件,請在檔案的個別行上為每個組件指定完整的組件名稱。 下列範例說明包含要解除安裝之組件的檔案內容。

myAssembly1,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab
myAssembly2,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab
myAssembly3,Version=1.1.0.0,Culture=en,PublicKeyToken=874e23ab874e23ab

範例

下列命令會將 mydll.dll 組件安裝到全域組件快取中。

gacutil /i mydll.dll

只要組件的參考計數不存在,下列命令便會從全域組件快取中移除 hello 組件。

gacutil /u hello

請注意,上述命令可能會從組件快取中移除一個以上的組件,因為沒有完整地指定組件名稱。 例如,如果快取中同時安裝了 hello 的 1.0.0.0 和 3.2.2.1 版本,gacutil /u hello 命令會將這兩個組件同時移除。

為避免移除一個以上的組件,請使用下列範例。 這個命令只會移除符合完整指定版本號碼、文化特性 (Culture) 和公開金鑰 (Public Key) 的 hello 組件。

gacutil /u hello, Version=1.0.0.1, Culture="de",PublicKeyToken=45e343aae32233ca

下列命令會將 assemblyList.txt 檔案中所指定的組件安裝到全域組件快取中。

gacutil /il assemblyList.txt

下列命令會從全域組件快取中移除 assemblyList.txt 檔案中指定的組件。

gacutil /ul assemblyList.txt

下列命令會將 myDll.dll 安裝到全域組件快取中,並加入要計數的參考。 myDll.dll 組件是由 MyApp 應用程式使用。 UNINSTALL_KEY MyApp 參數指定將 MyApp 加入至 Windows 中 [新增或移除程式] 的登錄機碼。 說明參數指定為 My Application Description。

gacutil /i /r myDll.dll UNINSTALL_KEY MyApp "My Application Description"

下列命令會將 myDll.dll 安裝到全域組件快取中,並加入要計數的參考。 配置參數 FILEPATH 和 id 參數 c:\applications\myApp\myApp.exe,指定安裝 myDll.dll. 之應用程式的路徑。說明參數指定為 MyApp。

gacutil /i /r myDll.dll FILEPATH c:\applications\myApp\myApp.exe MyApp

下列命令會將 myDll.dll 安裝到全域組件快取中,並加入要計數的參考。 配置參數 OPAQUE 允許您自訂 id 和 description 參數。

gacutil /i /r mydll.dll OPAQUE "Insert custom application details here" "Insert Custom description information here"

下列命令會使用 myApp 應用程式移除 myDll.dll 的參考。 如果這是組件的最後一個參考,它也會從全域組件快取中移除這個組件。

gacutil /u /r myDll.dll FILEPATH c:\applications\myApp\myApp.exe MyApp

下列命令會列出全域組件快取的內容。

gacutil /l

請參閱

參考

Shfusion.dll (組件快取檢視器)

Regasm.exe (組件登錄工具)

Visual Studio 和 Windows SDK 命令提示字元

概念

全域組件快取

其他資源

.NET Framework 工具

變更記錄

日期

記錄

原因

2011 年 4 月

加入使用 Visual Studio 和 Windows SDK 命令提示字元的相關資訊。

資訊加強。