全局程序集緩存工具(Gacutil.exe)用法詳解


全局程序集緩存工具 (Gacutil.exe)

 

全局程序集緩存工具使您可以查看和操作全局程序集緩存和下載緩存的內容。

gacutil [options] [assemblyName | assemblyPath | assemblyListFile]

 

參數

 
參數 說明

assemblyName

程序集的名稱。可以提供部分指定的程序集名稱(如 myAssembly)或完全指定的程序集名稱(如 myAssembly, Version=2.0.0.0, Culture=neutral, PublicKeyToken=0038abc9deabfle5)。

assemblyPath

包含程序集清單的文件的名稱。

assemblyListFile

列出要安裝或卸載的程序集的 ANSI 文本文件的路徑。若要使用文本文件安裝程序集,請在文件中的單獨一行上分別指定每個程序集的路徑。全局程序集緩存工具解釋相對於 assemblyListFile 的位置的相對路徑。若要使用文本文件卸載程序集,請在文件中的單獨一行上分別為每個程序集指定完全限定的程序集名稱。請參見本主題后面的 assemblyListFile 內容示例。

 
選項 說明

/cdl

刪除下載緩存的內容。

/f

與 /i 或 /il 選項一起指定此選項將強制重新安裝程序集。如果全局程序集緩存中已經存在同名的程序集,全局程序集緩存工具將改寫該程序集。

/h[elp]

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

/i assemblyPath

將程序集安裝到全局程序集緩存中。

/ifassemblyPath

將程序集安裝到全局程序集緩存中。如果全局程序集緩存中已經存在同名的程序集,全局程序集緩存工具將改寫該程序集。

指定此選項相當於同時指定 /i 和 /f 選項。

/il assemblyListFile

將 assemblyListFile 中指定的一個或多個程序集安裝到全局程序集緩存中。

/irassemblyPath

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 參數。若要卸載程序集,請指定 assemblyNameschemeid和 description 參數。

若要移除對程序集的引用,必須指定在安裝程序集時使用 /i 和 /r(或 /ir)選項指定的 schemeid 和description 參數。如果卸載程序集,則全局程序集緩存工具還從全局程序集緩存中移除該程序集,條件是它是最后一個要移除的引用,並且 Windows Installer 沒有對該程序集的未決引用。

scheme 參數指定安裝方案的類型。可以指定以下值之一:

  • UNINSTALL_KEY:如果安裝程序將應用程序添加到 Microsoft Windows 中的“添加/刪除程序”,則指定該值。應用程序通過將注冊表項添加到 HKLM\Software\Microsoft\Windows\CurrentVersion 中而將自己添加到“添加/刪除程序”中。

  • FILEPATH:如果安裝程序沒有將應用程序添加到“添加/刪除程序”中,則指定該值。

  • OPAQUE:如果提供的注冊表項或文件路徑不適於您的安裝方案,則指定該值。該值允許您為 id 參數指定自定義信息。

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

  • 如果為 scheme 參數指定 UNINSTALL_KEY,請在 HKLM\Software\Microsoft\Windows\CurrentVersion 注冊表項中指定應用程序集的名稱。例如,如果注冊表項是 HKLM\Software\Microsoft\Windows\CurrentVersion\MyApp,請指定 MyApp 作為 id 參數。

  • 如果為 scheme 參數指定 FILEPATH,請將安裝程序集的可執行文件的完整路徑指定為 id 參數。

  • 如果為 scheme 參數指定 OPAQUE,則可以將任何一段數據作為 id 參數提供。所指定的數據必須用引號 ("") 括起來。

description 參數允許您指定關於要安裝的應用程序的描述性文本。當枚舉引用時,顯示此信息。

/silent

取消所有輸出的顯示。

/uassemblyName

從全局程序集緩存中卸載程序集。

/ufassemblyName

通過移除對程序集的所有引用來強制卸載指定的程序集。

指定此選項相當於同時指定 /u 和 /f 選項。

Note注意

不能使用此選項移除使用 Microsoft Windows Installer 所安裝的程序集。如果嘗試此操作,則全局程序集緩存工具顯示錯誤信息。

/ul assemblyListFile

從全局程序集緩存中卸載 assemblyListFile 中指定的一個或多個程序集。

/u[ngen]assemblyName

從全局程序集緩存中卸載指定的程序集。如果指定的程序集存在現有引用數,則全局程序集緩存工具顯示引用數,而且不從全局程序集緩存中移除該程序集。

Note注意

在 .NET Framework 2.0 版中,不支持 /ungen。而是使用本機映像生成器 (Ngen.exe) 的 uninstall命令。

在 .NET Framework 1.0 和 1.1 版中,指定 /ungen 將使 Gacutil.exe 從本機映像緩存中移除該程序集。此緩存存儲了使用本機映像生成器 (Ngen.exe) 創建的程序集的本機映像。

/urassemblyName

scheme

id

description

從全局程序集緩存中卸載對指定程序集的引用。若要移除對程序集的引用,必須指定在安裝程序集時使用 /i和 /r(或 /ir)選項指定的 schemeid 和 description 參數。有關可為這些參數指定的有效值的說明,請參見 /r 選項。

指定此選項相當於同時指定 /u 和 /r 選項。

/?

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

備注

全局程序集緩存工具提供與 Windows 外殼程序擴展 (Shfusion.dll) 大致相同的緩存查看功能,但它更適於生成腳本、生成文件和批處理文件。

具體說來,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 命令會將這兩個程序集都移除。

使用下面的示例以避免刪除多個程序集。該命令只刪除與完全指定的版本號、區域性和公鑰匹配的 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“添加/刪除程序”中的注冊表項。description 參數被指定為 My Application Description

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

以下命令將 myDll.dll 安裝到全局程序集緩存中並添加引用對其進行計算。scheme 參數 FILEPATH 和 id 參數c:\applications\myApp\myApp.exe 指定要安裝 myDll.dll 應用程序的路徑。description 參數被指定為MyApp

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

以下命令將 myDll.dll 安裝到全局程序集緩存中並添加引用對其進行計算。scheme 參數 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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM