当前位置: 首页 > news >正文

.Net Gacutil工具(全局程序集缓存工具)使用教程

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
http://www.lryc.cn/news/441851.html

相关文章:

  • 安卓13修改设置设备型号和设备名称分析与更改-android13设置设备型号和设备名称更改
  • AI健身体能测试之基于paddlehub实现引体向上计数个数统计
  • Redis常见报错及解决方法总结
  • 【TabBar嵌套Navigation案例-JSON的简单使用 Objective-C语言】
  • 通过鼠标移动来调整两个盒子的宽度(响应式)
  • React Zustand状态管理库的使用
  • pyrosetta MoveMap介绍
  • 在线安全干货|如何更改IP地址?
  • 【C++】【网络】【Linux系统编程】单例模式,加锁封装TCP/IP协议套接字
  • Matplotlib在运维开发中的应用
  • centos下nvme over rdma 环境配置
  • 【C++】——多态详解
  • STM32上实现FFT算法精准测量正弦波信号的幅值、频率和相位差(标准库)
  • 计算机毕业设计 农场投入品运营管理系统 Java+SpringBoot+Vue 前后端分离 文档报告 代码讲解 安装调试
  • 【笔记】2.1 半导体三极管(BJT,Bipolar Junction Transistor)
  • 企业中文档团队的三种组织形式
  • 古诗词四首鉴赏
  • 全国行政区划下载(高德、阿里、天地图)
  • Springboot提升-MapStruct组件使用
  • 如何借助ChatGPT提升论文质量:实战指南
  • NLP开端:Tokenizer-文本向量化
  • STM32 MCU学习资源
  • Python知识点:Python内存管理与优化
  • SpringBoot Kafka发送消息与接收消息实例
  • 【资料分析】刷题日记2
  • Aigtek功率放大器怎么选择型号
  • 【RabbitMQ】重试机制、TTL
  • Linux用户及用户组操作命令笔记
  • threejs加载高度图渲染点云,不支持tiff
  • MySQL面试题——第二篇