GAC介紹:
GAC(Global Assembly Cache)全局程序集緩存,是用於存放.Net應用程序共享的程序集。
像平常我們在Visual Studio中引用系統程序集時,這些程序集便來自於GAC。
GAC默認位置為:%windir%\Microsoft.NET\assembly(%windir%代表的是你Windows的安裝目錄,一般為C:\Windows)

Gacutil(Global Assembly Cache Tool)
Gacutil是用於對GAC進行管理的工具,它隨 Visual Studio 一起安裝。
如何打開Gacutil
1、打開Visual Studio開發人員命令提示符(管理員運行)

2、輸入gacutil.exe
Gacutil使用教程:
一、列出GAC所有程序集
1 gacutil.exe /l
二、列出GAC中指定名稱的程序集,如System.Drawing
1 gacutil.exe /l System.Drawing

三、上面兩個命令參數/l后帶上r,可以顯示更加詳細的程序集信息,包括跟蹤引用信息。
如:
1 gacutil.exe /lr
1 gacutil.exe /lr System.Drawing
四、安裝程序集到GAC
1 gacutil.exe /i "程序集路徑"
注意:
1、一般情況下,都是將程序集放在運行目錄下。無須安裝到GAC。除非明確要求共享該程序集。
2、程序集需要具有強名稱,否則會安裝失敗。

下面介紹如何生成一個具有強名稱的程序集
使用Visual Studio創建一個類庫工程,命名為ClassLibrary1

使用SN.exe生成一個密鑰文件(在Visual Studio開發人員命令提示符中運行)
注意:如果不指定路徑,會生成到當前命令提示符所在的目錄。可以指定目錄生成。我這里直接生成到D盤
Sn -k D:\ClassLibrary.snk
打開ClassLibrary1類庫工程的Properties->AssemblyInfo.cs,添加一行
1 [assembly: AssemblyKeyFile(@"D:\ClassLibrary.snk")]

這個時候就可以安裝成功了

查看

如果需要在安裝時指定詳細信息,可以帶上/r參數
1 gacutil.exe /r <reference_scheme> <reference_id> <description>
reference_scheme是所添加的引用的類型。可以取:UNINSTALL_KEY、FILEPATH 或 OPAQUE這幾個值
reference_id是程序集的標識符,取決於 reference_scheme
description是代表當前reference_scheme的說明。
使用示例如下:
1 gacutil /i D:\ClassLibrary1.dll /r OPAQUE FFFFFFFF-ABCD-ABCD-ABCD-52707CDFAFFF "Installed by user"
這個時候,我們再去查看該程序集,就可以看到如下詳細信息了

五、批量安裝程序集到GAC中
gacutil.exe /il list.txt
list.txt中的內容如下:

批量安裝時也可以帶上參數 /r,來指定詳細信息
六、從GAC中卸載程序集
1 gacutil.exe /u ClassLibrary1

說明:盡量指定詳細的程序集名,因為GacUtil是按照文件名包含來查找的,防止誤刪。
1 gacutil.exe /u ClassLibrary1,Version=1.0.0.0,Culture=neutral
七、從GAC中批量卸載程序集
gacutil.exe /ul list.txt
list.txt內容如下

八、移除所有跟蹤引用,強制卸載程序集
1 gacutil.exe /uf ClassLibrary1,Version=1.0.0.0,Culture=neutral
作者: zhaotianff
轉載請注明出處
