使用 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(全局程序集缓存)中,以便其他的程序也可 ...
随机推荐
- php-fpm开机启动
php-fpm开机自动启动脚本 网上有各种版本的php-fpm开机自动启动脚本, 其实你编译后源目录已经生成自动脚本.不用做任何修改即用. cp {php-5.3.x-source-dir}/sapi ...
- jsDOM编程-拖拽层
页面样式代码: <!doctype html><html><head><meta http-equiv="content-type" co ...
- UWP 使用OneDrive云存储2.x api(二)【全网首发】
接上一篇 http://www.cnblogs.com/hupo376787/p/8032146.html 上一篇提到为了给用户打造一个完全无缝衔接的最佳体验,UWP开发者最好也要实现App设置和数据 ...
- 与apk签名有关的那些概念与命令
一.概念篇 1.消息摘要-Message Digest 消息摘要:在消息数据上,执行一个单向的hash函数,生成一个固定长度的hash值,这个Hash值就是消息摘要,也成为数字指纹. 消息摘要特点: ...
- 深入理解 React JS 中的 setState
此文主要探讨了 React JS 中的 setState 背后的机制,供深入学习 React 研究之用. 在课程 React.js入门基础与案例开发 中,有些同学会发现 React JS 中的 set ...
- 总结oninput、onchange与onpropertychange事件的用法和区别
前端页面开发的很多情况下都需要实时监听文本框输入,比如腾讯微博编写140字的微博时输入框hu9i动态显示还可以输入的字数.过去一般都使用onchange/onkeyup/onkeypress/onke ...
- 图解JQUERY尺寸及位置定义
最近在学习JQUERY的一些应用,接触到了JQUERY对于元素尺寸及位置定义,还有就是配合浏览器尺 寸及状态的计算所做出的一些动画特效.其实像这类JQUERY应用无外乎涉及这些属性的调用:innerH ...
- 理解JavaScript原型
Javascript原型总会给人产生一些困惑,无论是经验丰富的专家,还是作者自己也时常表现出对这个概念某些有限的理解,我认为这样的困惑在我们一开始接触原型时就已经产生了,它们常常和new.constr ...
- Nginx集群之基于Redis的WebApi身份验证
目录 1 大概思路... 1 2 Nginx集群之基于Redis的WebApi身份验证... 1 3 Redis数据库... 2 4 Visualbox ...
- Geohash-》通过经纬度计算两地距离的函数
/** * 根据起点坐标和终点坐标测距离 * @param [array] $from [起点坐标(经纬度),例如:array(118.012951,36.810024)] ...