使用 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选择到"gacutil.exe”文件所在的目录,
或者 使用Visual Studio 命令提示符
如在命令行输入: gacutil -i D:/Microsoft.SharePoint.dll
可以输入‘gacutil -?’查看帮助
存放GAC中程序集的路径有两个:
C:\Windows\assembly
C:\Windows\Microsoft.NET\assembly
用gacutil注册的程序集会放在第二个目录C:\Windows\Microsoft.NET\assembly下
但是,注意:不能将一个弱命名程序集安装到GAC中。在进行上述2-3种方法安装过程之前,我们必须保证此项目具有强名称才可以。
给项目添加强名称需要以下三步:
1. 在项目调试完成后,使用sn.exe工具生成一个密钥。sn -k "生成的密钥的全路径"。
如在命令行输入: sn -k D:/myKey.snk
2. 将密钥与项目的程序集进行关联: 项目属性-->签名-->为程序集签名-->选择强名称密钥文件。
此外, 还有另外一种方法,就是在项目的AssemblyInfo.cs文件中,修改"AssemblyKeyFile"的属性。
如: [assembly:AssemblyKeyFile("D://myKey.snk")]
3. 重新生成项目集。
如何在Visual Studio中引用自己注册的GAC:
将.dll添加到GAC后,在C:\WINDOWS\assembly或C:\Windows\Microsoft.NET\assembly下可以看到,但在Visual Studio的添加引用选项卡里看不到,解决办法有两个:
方案一:在“添加引用”对话框中显示程序集
即使已将程序集安装到全局程序集缓存 (GAC) 中,“添加引用”对话框也不会自动显示每个程序集。“添加引用”对话框基于路径并要求添加注册表项,该项指定要显示的程序集的位置。
在“添加引用”对话框中显示程序集
添加以下注册表项之一,其中 <AssemblyLocation> 是要在“添加引用”对话框中显示的程序集目录,例如 C:\\MyAssemblies。
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\.NETFramework\<version>\AssemblyFoldersEx\MyAssemblies]@="<AssemblyLocation>"
注意
在 HKEY_LOCAL_MACHINE 配置单元下创建注册表项以后,所有用户都可以在“添加引用”对话框的指定位置看到程序集。在 HKEY_CURRENT_USER 配置单元下创建注册表项只会影响当前用户的设置。
重新启动 Visual Studio。
例如,我们将System.Data.SQLite.dll用gacutil加入GAC后,添加如下注册表信息:
然后重启Visual Studio,然后在添加引用选项卡中搜索:SQLite,可以看到如下搜索结果:
添加该程序集到项目,查看System.Data.SQLite的属性
我们可以看到属性窗口显示的Path就是我们用gacutil注册System.Data.SQLite到GAC的文件地址。
方案二:可以把你的DLL复制到.NET Framework目录(%WINDIR%\Microsoft.NET\Framework\v1.x.yyyy)中,这样的话.可以达到你的目的. 但是,MS建议我们不应该将自己的assembly拷贝到Framework目录中。
一个更好的方法就是把它们放在一个单独的目录中,然后给Windows Registry添加一个key,告诉VS.NET在哪里可以找到这些assembly。除了核心的Framework assembly外,VS.NET也可以显示在以下这些Registry key中列出的目录中的任何assembly:HKEY_CURRENT_USER\Software\Microsoft\.NETFramework\AssemblyFolders
HKEY_LOCAL_MACHINE\Software\Microsoft\.NETFramework\AssemblyFolders
HKEY_CURRENT_USER\Software\Microsoft\VisualStudio\7.1\AssemblyFolders
HKEY_LOCAL_MACHINE\Software\Microsoft\VisualStudio\7.1\AssemblyFolders
使用 Gacutil.exe 将.Net程序集添加到GAC的方法的更多相关文章
- 【C# 程序集】把自己的程序集添加|卸载 到GAC 全局程序集缓存中
添加全局程序集缓存 Global Assembly Cache Tool (Gacutil.exe) 操作环境windows10+vs2019 cmd.exe位置在 C:\Windows\System ...
- 【转】Gacutil.exe(全局程序集缓存工具)
全局程序集缓存工具使您可以查看和操作全局程序集缓存和下载缓存的内容. 安装 Visual Studio 和 Windows SDK 时会自动安装此工具. 要运行工具,我们建议您使用 Visual St ...
- Gacutil.exe(全局程序集缓存工具)
全局程序集缓存 .NET Framework (current version) 其他版本 安装有公共语言运行时的每台计算机都具有称为全局程序集缓存的计算机范围内的代码缓存.全局程序集缓存中存储了专门 ...
- 全局程序集缓存工具(Gacutil.exe)用法详解
全局程序集缓存工具 (Gacutil.exe) 全局程序集缓存工具使您可以查看和操作全局程序集缓存和下载缓存的内容. 复制 gacutil [options] [assemblyName | asse ...
- 将dll程序集添加到缓存里
1.点击开始---所有程序---...如下图 并以管理员身份运行. 2.输入命令行 gacutil.exe /i D:\Word\CRS_BPM_Sln\SourceCode\BPM\Referenc ...
- Register DLL Assembly Gacutil.exe(全局程序集缓存工具)
全局程序集缓存工具使你可以查看和操作全局程序集缓存和下载缓存的内容. 此工具会自动随 Visual Studio 一起安装. 若要运行此工具,请使用开发人员命令提示(或 Windows 7 中的 Vi ...
- 将MyApp.exe和Autorun.lnk添加到NK里,在project.bib文件内加入
1. 将应用程序和应用程序快捷方式添加到映像里,再将快捷方式添加到StartUp目录下,这样当系统运行后应用程序就能自动运行:2. 直接替换Wince的SHELL,即修改注册表: [HKEY_LOCA ...
- gacutil.exe的位置
如果我们需要用gacutil去注册dll ,就需要使用Visual Studio的Command Prompt,前提是需要安装Visual Studio,但是客户端上一般是没有安装VS的,所以你就需要 ...
- C# 生成强命名程序集并添加到GAC
针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可 ...
随机推荐
- ffmpeg常用命令---转
1.分离视频音频流 ffmpeg -i input_file -vcodec copy -an output_file_video //分离视频流 ffmpeg -i input_file -acod ...
- java数组去重
java数组去重 1.创建新数组,用于保存比较结果 2.设定随机数组最大最小值 3.开始去重 4.计算去重所需时间 package org.zheng.collection; import java. ...
- vue监听scroll使用报错的解决办法
错误说明:在切换路由以后,依旧在其他页面触发了scroll有关的函数, 错误原因:在spa项目中,window对象是不变的,所以每次使用后需要销毁. 解决办法:vue的生命周期destroyed中销毁 ...
- .net 框架
目录 API 应用框架(Application Frameworks) 应用模板(Application Templates) 人工智能(Artificial Intelligence) 程序集处理( ...
- HTML学习 框架
iframe 在原来的页面嵌入其他页面 <iframe src="其他页面地址" width="宽" height="高" frame ...
- 每天学一点Docker(5)——了解Docker架构
Docker的核心组件: 1.Docker客户端 - Client 2.Docker服务器 - Docker deamon 3.Docker镜像 - Image 4.仓库 - Registry 5.D ...
- Linux 文件路径包含特殊字符的处理方式
文件路径包含特殊字符的处理方式 1)只用转义符 \ 2)使用双引号 mv /home/".Sent Items"/ /home/".&XfJT0ZABkK5O9g ...
- Effective Java 第三版——17. 最小化可变性
Tips <Effective Java, Third Edition>一书英文版已经出版,这本书的第二版想必很多人都读过,号称Java四大名著之一,不过第二版2009年出版,到现在已经将 ...
- JS 对象API之判断父对象是否在子对象的原型链上
语法:父对象.prototype.isPrototypeOf(子对象) 代码栗子: function Student(){ this.name = "小马扎"; ; } var s ...
- k8s 重要概念 - 每天5分钟玩转 Docker 容器技术(117)
在实践之前,必须先学习 Kubernetes 的几个重要概念,它们是组成 Kubernetes 集群的基石. Cluster Cluster 是计算.存储和网络资源的集合,Kubernetes 利用这 ...