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

全局程序集缓存
.NET Framework (current version) 其他版本 

安装有公共语言运行时的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存。全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集。
应当仅在需要时才将程序集安装到全局程序集缓存中以进行共享。一般原则是:程序集依赖项保持专用,并在应用程序目录中定位程序集,除非明确要求共享程序集。另外,不必为了使 COM 互操作或非托管代码可以访问程序集而将程序集安装到全局程序集缓存。
注意
在有些情况下,您显然不希望将程序集安装到全局程序集缓存中。如果您将组成应用程序的某个程序集置于全局程序集缓存中,则将不再能够通过使用 xcopy 命令复制应用程序目录来复制或安装该应用程序。您还必须在全局程序集缓存中移动该程序集。
有两种方法可以将程序集部署到全局程序集缓存中:
使用专用于全局程序集缓存的安装程序。该方法是将程序集安装到全局程序集缓存的首选方法。
使用 Windows 软件开发包 (SDK) 提供的名为全局程序集缓存工具 (Gacutil.exe) 的开发工具。
注意
在部署方案中,应该使用 Windows Installer 将程序集安装到全局程序集缓存中。我们一般只在开发方案中使用全局程序集缓存工具,这是因为它不提供使用 Windows Installer 时可以提供的程序集引用计数功能和其他功能。
从 .NET Framework 4 开始,全局程序集缓存的默认位置为 %windir%\Microsoft.NET\assembly。在 .NET Framework 的早期版本中,默认位置为 %windir%\assembly。
管理员通常使用访问控制列表 (ACL) 来保护 systemroot 目录,以控制写入和执行访问。因为全局程序集缓存安装在 systemroot 目录的子目录中,它继承了该目录的 ACL。建议只允许具有“管理员”权限的用户从全局程序集缓存中删除文件。
在全局程序集缓存中部署的程序集必须具有强名称。将一个程序集添加到全局程序集缓存时,必须对构成该程序集的所有文件执行完整性检查。缓存执行这些完整性检查以确保程序集未被篡改(例如,当文件已更改但清单未反映此更改时)。
C:\Windows\Microsoft.NET\assembly
%windir%\Microsoft.NET\assembly

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

全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容。

此工具会自动随 Visual Studio 一起安装。若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示)。有关详细信息,请参阅Visual Studio 命令提示

在命令提示符处,键入以下内容:

语法

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,请为 id 参数指定 MyApp。
  • 如果为 scheme 参数指定 FILEPATH,请指定安装程序集的可执行文件的完整路径作为 id 参数。
  • 如果为 scheme 参数指定 OPAQUE,则可以将任何一段数据作为 id 参数提供。所指定的数据必须用引号 ("") 括起来。

description 参数允许你指定关于要安装的应用程序的描述性文本。此信息在枚举引用时显示。


/silent


取消所有输出的显示。


/uassemblyName


将某个程序集从全局程序集缓存卸载。


/ufassemblyName


通过移除对程序集的所有引用来强制卸载指定的程序集。

指定此选项相当于同时指定 /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(本机映像生成器) 创建的程序集的本机映像。


/urassemblyName

scheme

id

description


从全局程序集缓存中卸载对指定程序集的引用。若要移除对程序集的引用,必须指定在安装程序集时使用 /i 和 /r(或 /ir)选项指定的相同的schemeid 和 description 参数。有关可为这些参数指定的有效值的说明,请参见 /r 选项。

指定此选项相当于同时指定 /u 和 /r 选项。


/?


显示该工具的命令语法和选项。

备注

注意

必须具有管理员特权才能使用 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 命令会将这两个程序集都移除。

使用下面的示例可避免删除多个程序集。此命令只删除与完全指定的版本号、区域性和公钥匹配的 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
时间: 2024-10-14 17:18:45

Gacutil.exe(全局程序集缓存工具)的相关文章

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

全局程序集缓存工具 (Gacutil.exe) 全局程序集缓存工具使您可以查看和操作全局程序集缓存和下载缓存的内容. 复制 gacutil [options] [assemblyName | assemblyPath | assemblyListFile] 参数 参数 说明 assemblyName 程序集的名称.可以提供部分指定的程序集名称(如 myAssembly)或完全指定的程序集名称(如 myAssembly, Version=2.0.0.0, Culture=neutral, Publ

Register DLL Assembly Gacutil.exe(全局程序集缓存工具)

全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容. 此工具会自动随 Visual Studio 一起安装. 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Visual Studio 命令提示). 使用方法如下: 方法1: (1).开始菜单->Microsoft Visual Studio 2010 ->Visual Studio Tools->Visual Studio Command Prompt (2010) 命令提示,在控制台中输入 gac

C#中的全局程序集缓存定义

安装有公共语言运行时的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存.全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集. 应当仅在需要时才将程序集安装到全局程序集缓存中以进行共享.一般原则是:程序集依赖项保持专用,并在应用程序目录中定位程序集,除非明确要求共享程序集.另外,不必为了使 COM 互操作或非托管代码可以访问程序集而将程序集安装到全局程序集缓存. 有两种方法可以将程序集部署到全局程序集缓存中: 使用专用于全局程序集缓存的安装程序.该方法是将程序集安装到全局

C#程序集系列11,全局程序集缓存

全局程序集缓存(GAC:Global Assembly Cache)用来存放可能被多次使用的强名称程序集.当主程序需要加载程序集的时候,优先选择到全局程序集缓存中去找寻需要的程序集. 为什么需要全局程序集缓存?假设程序A引用B程序集,程序C也引用B程序集,在这种情况下,可以把B程序集放到一个全局程序集缓存中是明智的做法. □ 使用全局缓存程序集 →删除F盘as文件夹中所有dll和exe后缀的文件→编译Cow.cs成程序集 →把刚创建的Farm.dll存放到全局程序集缓存中报错是因为,非强名称程序

使用 Gacutil.exe 将.Net程序集添加到GAC的方法

使用gacutil.exe工具安装:gacutil -i "要注册的dll文件全路径" "gacutil.exe”工具为.NET自带工具 ,需要注意的是:这个工具在.NET Framework 运行时中并不包含.他是SDK的一部分. 例如在 .NET Framework 2.0 时,我们就要单独下载 .NET Framework 2.0 SDK,或者装了 Visual Studio 后才会具有这个工具. 在开始运行中输入"cmd”进入命令窗口,通过CD选择到&quo

gacutil.exe 注册assembly

首先有一个dll文件的清单,是一个txt文本,名为:list.txt,内容如下 C:\codetfs\ICBC\ICBC.Intelligence\ICBC.Intelligence.Common\bin\Debug\ICBC.Intelligence.Common.dllC:\codetfs\ICBC\ICBC.Intelligence\ICBC.Intelligence.Business\bin\Debug\ICBC.Intelligence.Business.dllC:\codetfs\I

mmc.exe 控制台管理工具

mmc.exe 控制台管理工具,主要用来打开msc文件. 常用msc文件:certmgr.msc(证书管理) diskmgmt.msc(磁盘管理) lusrmgr.msc(用户管理) secpol.msc(安全设置) ciadv.msc(索引服务) drogeaswin32.msc(?) ntmsmgr.msc(可移动存储) services.msc(服务管理) compmgmt.msc(计算机管理) eventvwr.msc(事件查看) ntmsoprq.msc(可移动存储管理员操作请求) w

Git-2.11.1-64-bit.exe 代码管理工具使用

下载并安装:Git-2.11.1-64-bit.exe 1.找到桌面>>右键>>打开Git Bash here 控制台 2.输入下面几条命令 初始化git环境:git config --global user.name "qiweb_vps" git config --global user.email "[email protected]" git init Initialized empty Git repository in C:/Us

python转exe的小工具

其实只是在cxfreeze的基础上加了个壳,做成窗口软件了 使用了pyqt做的界面,软件发布在了开源中国上,可以直接去下面的地址查看 http://git.oschina.net/robocky/py2exe_win """ Module implementing DPy2Exe. """ from PyQt5.QtCore import pyqtSlot from PyQt5.QtWidgets import QDialog, QMessage