如何让程序集在编译时自动添加到GAC
2010-08-23 17:04
399 查看
如果你的工程在调试时需要某些程序集存在于GAC,但那些程序集是你另外的工程编译时生成的,或者因为其它原因是动态变化的,那么最好的做法是在编译该工程时就把这些程序集重新添加到GAC中。
如果因为部署等工作导致你的GAC中存在你工程的程序集,而使你不能加断点调试等,而这种事情又经常发生,那么在编译该工程时就把这些程序集重新添加到GAC中也不失为一个好的解决方案。
让程序集在编译时自动添加到GAC的思路很简单,就是写一个批处理文件,然后在工程的生成事件中调用这个批处理文件。具体实现如下:
1. 在你工程的目录下创建一个Register.bat文件,在批处理中调用微软gacutil.exe工具,gacutil.exe工具的位置根据你操作系统版本好不同而不同,XP是v6.0A,而Vista和Win7则是v7.0A。这里假设你有2个项目:MyProject1和MyProject2,MyProject1是个可执行文件,而MyProject2是个动态链接库。
@ECHO OFF
SET PATH=%PATH%;C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin;
set solutionPath=C:\Users\cyljxu\Documents\Visual Studio 2008\Projects\WindowsFormsApplication17\
gacutil /if "%solutionPath%MyProject1\bin\%~1\MyProject1.exe"
gacutil /if "%solutionPath%MyProject2\bin\%~1\MyProject2.dll"
EXIT 0
注意:\bin\%~1\后面的%~1指的是的编译配置,比如Debug或者Release等,这将在Build Event的参数中传入
2. 打开项目的属性页面,然后添加一个Post-build event command line:
call "$(ProjectDir)Register.bat" "$(ConfigurationName)"
需要注意的事项:
1. 凡是要加入GAC的程序集都需要签名。
2. 由于gacutil命令需要管理员权限,所以在Vista和Win7下你必须以管理员方式运行IDE。
如果因为部署等工作导致你的GAC中存在你工程的程序集,而使你不能加断点调试等,而这种事情又经常发生,那么在编译该工程时就把这些程序集重新添加到GAC中也不失为一个好的解决方案。
让程序集在编译时自动添加到GAC的思路很简单,就是写一个批处理文件,然后在工程的生成事件中调用这个批处理文件。具体实现如下:
1. 在你工程的目录下创建一个Register.bat文件,在批处理中调用微软gacutil.exe工具,gacutil.exe工具的位置根据你操作系统版本好不同而不同,XP是v6.0A,而Vista和Win7则是v7.0A。这里假设你有2个项目:MyProject1和MyProject2,MyProject1是个可执行文件,而MyProject2是个动态链接库。
@ECHO OFF
SET PATH=%PATH%;C:\Program Files\Microsoft SDKs\Windows\v7.0A\bin;
set solutionPath=C:\Users\cyljxu\Documents\Visual Studio 2008\Projects\WindowsFormsApplication17\
gacutil /if "%solutionPath%MyProject1\bin\%~1\MyProject1.exe"
gacutil /if "%solutionPath%MyProject2\bin\%~1\MyProject2.dll"
EXIT 0
注意:\bin\%~1\后面的%~1指的是的编译配置,比如Debug或者Release等,这将在Build Event的参数中传入
2. 打开项目的属性页面,然后添加一个Post-build event command line:
call "$(ProjectDir)Register.bat" "$(ConfigurationName)"
需要注意的事项:
1. 凡是要加入GAC的程序集都需要签名。
2. 由于gacutil命令需要管理员权限,所以在Vista和Win7下你必须以管理员方式运行IDE。
相关文章推荐
- 程序打包发布时,如何将程序集自动安装到全局程序集缓存(GAC)中
- 如何让控件在编译时,自动添加所需的单元
- 如何将程序集(.dll文件)添加到GAC(全局程序集缓存)?
- 每天如何自动编译项目并将之打包添加到VSS中
- 关于如何在make一个Linux下的C/C++工程时,自动添加版本号、编译日期等信息
- 如何给Windows添加自动启动的程序
- Unity编译至Xcode工程后自动添加文件和库的方法
- 如何自动添加dcos的节点(非安装方法)
- 如何阻止Unity3D把脚本自动添加到Component菜单中
- 如何将自己的代码自动添加版权信息
- Unity编译到Xcode自动添加AppIcon
- 如何在VS2005中自动添加事件处理函数?
- 如何将程序集(dll)安装到全局程序集缓存(GAC)中
- 如何让WordPress自动对外链添加"nofollow"标签
- EF中为表添加一些设置后如何自动关联
- 转: 如何将dll 程序集安装到GAC中?
- 如何将程序集(dll)安装到全局程序集缓存(GAC)中
- 如何添加一个jni库模块到整理编译中?
- 如何删除CKEditor中自动添加的段落P标签
- DevExpress WPF入门指南:如何自动或手动添加DXSplashScreen控件