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

安装 Visual Studio 和 Windows SDK 时会自动安装此工具。 要运行工具,我们建议您使用 Visual Studio 命令提示符或 Windows SDK 命令提示符(也称 CMD Shell)。 您可以使用这些实用程序轻松运行工具,而不需要导航到安装文件夹。 有关更多信息,请参见 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

包含程序集清单的文件的名称。

assemblyListFile

列出要安装或卸载的程序集的 ANSI 文本文件的路径。 若要使用文本文件安装程序集,请在文件中的单独一行上分别指定每个程序集的路径。 全局程序集缓存工具解释相对于 assemblyListFile 的位置的相对路径。 若要使用文本文件卸载程序集,请在文件中的单独一行上分别为每个程序集指定完全限定的程序集名称。 请参见本主题后面的 assemblyListFile 内容示例。

选项

说明

/cdl

删除下载缓存的内容。

/f

与 /i 或 /il 选项一起指定此选项将强制重新安装程序集。 如果全局程序集缓存中已经存在同名的程序集,全局程序集缓存工具将覆盖该程序集。

/h[elp]

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

/i assemblyPath

将程序集安装到全局程序集缓存中。

/if 程序集路径

将程序集安装到全局程序集缓存中。 如果全局程序集缓存中已经存在同名的程序集,全局程序集缓存工具将覆盖该程序集。

指定此选项相当于同时指定 /i 和 /f 选项。

/il assemblyListFile

将 assemblyListFile 中指定的一个或多个程序集安装到全局程序集缓存中。

/ir 程序集路径

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 选项。

注意:不能使用此选项移除使用 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 选项。

/?

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

备注

 

全局程序集缓存工具提供与 Windows shell 扩展 (Shfusion.dll) 大致相同的缓存查看功能,但它更适于生成脚本、生成文件和批处理文件。

注意

必须具有管理员特权才能使用 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

【转】Gacutil.exe(全局程序集缓存工具)的更多相关文章

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

    全局程序集缓存工具 (Gacutil.exe) 全局程序集缓存工具使您可以查看和操作全局程序集缓存和下载缓存的内容. 复制 gacutil [options] [assemblyName | asse ...

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

    全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容. 此工具会自动随 Visual Studio 一起安装. 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Vi ...

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

    全局程序集缓存 .NET Framework (current version) 其他版本 安装有公共语言运行时的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存.全局程序集缓存中存储了专门 ...

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

    安装有公共语言运行时的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存.全局程序集缓存中存储了专门指定给由计算机中若干应用程序共享的程序集. 应当仅在需要时才将程序集安装到全局程序集缓存中以 ...

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

    使用gacutil.exe工具安装:gacutil -i "要注册的dll文件全路径" "gacutil.exe”工具为.NET自带工具 ,需要注意的是:这个工具在.NE ...

  6. 如何将程序集安装到全局程序集缓存GAC

    针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可 ...

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

    全局程序集缓存(GAC:Global Assembly Cache)用来存放可能被多次使用的强名称程序集.当主程序需要加载程序集的时候,优先选择到全局程序集缓存中去找寻需要的程序集. 为什么需要全局程 ...

  8. 29防止程序集被篡改仿冒,全局程序集缓存GAC

      为什么需要强名称程序集和数字签名 有一个类库项目ClassLib,对应的程序集是ClassLib.dll.当前控制台项目引用ClassLib.dll程序集的方式有2种: 1.通过添加现有项目 文件 ...

  9. 【C# 程序集】把自己的程序集添加|卸载 到GAC 全局程序集缓存中

    添加全局程序集缓存 Global Assembly Cache Tool (Gacutil.exe) 操作环境windows10+vs2019 cmd.exe位置在 C:\Windows\System ...

随机推荐

  1. 大巧不工web前端设计修炼之道—笔记

      设计原则: 深入人心的设计--别让我思考 简洁是一种文化,一种需求,一种思想   ·排版 ·字体(衬线 | | 无衬线)

  2. JS动态插入HTML后不能执行后续JQUERY操作

    通过js追加的html 发现 不能点击 执行函数   普通绑定事件:$('.btn1').click(function(){}绑定 事件委托   解决方法: $("body").d ...

  3. 使用SAS令牌连接Azure EventHub

    概述 事件中心使用在命名空间和事件中心级别提供的共享访问签名.SAS令牌是从SAS密钥生成的,它是以特定格式编码的URL的SHA哈希. 事件中心可以使用密钥(策略)的名称和令牌重新生成哈希,以便对发送 ...

  4. Linux操作系统桌面环境GNOME和KDE的切换

    一.设置GNOME或者KDE为默认的启动桌面环境 方法1:修改/etc/sysconfig/desktop,根据需要将“DESKTOP”后面的内容改为KDE或GNOME. 方法2:在当前用户目录下建立 ...

  5. atitit.编程语言 类与对象的 扩展机制.doc

    atitit.编程语言 类与对象的 扩展机制.doc 1.1. Java 下一代: 没有继承性的扩展1 1.2. 继承1 1.3. 使用cglib动态为Java类添加方法1 1.4. 工具类 1 1. ...

  6. Xamarin for VS 3.11.1594 Stable版免费完整破解补丁

    Xamarin for VS 3.11.1594 Stable版免费完整破解补丁 此版本只能用于3.11.1594版本破解, 其他版本可能会有错误. Android和IOS完整支持,不像某些破解只支持 ...

  7. Angularjs学习笔记3_datepicker

    1.使用jquery-ui +angular      <script src="http://libs.useso.com/js/jquery/1.11.1/jquery.js&qu ...

  8. 基于注解的Mybatis mapper 接口注意事项

    基于注解的Mybatis mapper 接口功能没有mapper xml配置文件丰富,并且动态sql语句的灵活性不能和xml配置相比. 这里仅仅说一下基于注解的动态sql注意事项: Mybatis提供 ...

  9. zombie process

    僵尸进程:子进程退出后,父进程还没有回收子进程的资源,那么这个子进程就处于僵尸状态.Q1:“资源”是些什么?Q2:父进程如何回收子进程的资源? 内核为每个终止子进程保存了一定量的信息,所以当终止进程的 ...

  10. Dig HOWTO 中文手册--dig命令使用大全

    Dig HOWTO 中文手册--dig命令使用大全 DNS -- 本人翻译的dig howto手册. 译者序: 可以这样说,翻译本篇文档的过程就是我重新学习DNS的过程,dig命令可以帮助我们学习DN ...