GAC全局程序集缓存相关知识
一 将dll部署到全局程序集缓存(GAC)中
全局程序集缓存(GAC)(位置 C:\WINDOWS\assembly)(win7 .net 4.0下 C:\Windows\Microsoft.NET\assembly\)。
针对一些类库项目或用户控件项目(一般来说,这类项目最后编译生成的是一个或多个dll文件),在程序开发完成后,有时需要将开发的程序集(dll文件)安装部署到GAC(全局程序集缓存)中,以便其他的程序也可以调用。
一般来说,将程序集(dll)安装到GAC中有以下几种方法:
1. 手动将要安装部署的dll文件拖至系统目录windows下的assembly文件夹下(一般为C:/windows/assembly),此种方法不便于在安装部署时使用。
2. 使用gacutil.exe工具安装:gacutil -i "要注册的dll文件全路径"。
"gacutil.exe”工具为.NET自带工具 (C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin)
注win7下由于权限问题,要以管理员身份启动这个命令才行;
在开始运行中输入"cmd”进入命令窗口,通过CD选择到"gacutil.exe”文件所在的目录,
或者 使用Visual Studio 命令提示符
如在命令行输入: gacutil -i D:/Microsoft.SharePoint.dll
可以输入‘gacutil -?’查看帮助
但是,注意:不能将一个弱命名程序集安装到GAC中。在进行上述2-3种方法安装过程之前,我们必须保证此项目具有强名称才可以。
给项目添加强名称需要以下三步:
1. 在项目调试完成后,使用sn.exe工具生成一个密钥。sn -k "生成的密钥的全路径"。
如在命令行输入: sn -k D:/myKey.snk
2. 将密钥与项目的程序集进行关联: 项目属性-->签名-->为程序集签名-->选择强名称密钥文件。
此外, 还有另外一种方法,就是在项目的AssemblyInfo.cs文件中,修改"AssemblyKeyFile"的属性。
如: [assembly:AssemblyKeyFile("D://myKey.snk")] 这个方法在vs2010中不行,会报错,推荐用第一种
3. 重新生成项目集,再用gacutil -i 安装
将程序集从GAC中移出(称为“卸载”)的方法也有两种:
1:打开GAC文件夹,选中要卸载的程序集,然后在右键菜单中选择“卸载”
2:使用DOS命令:gacutil /u myControls
注:/u表示卸载,后面的参数表示的是程序集的名称,不能写上.dll