如何让程序集在编译时自动添加到GAC

  如果你的工程在调试时需要某些程序集存在于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。

 

  

 

 

posted on 2010-08-23 17:04  cylj.xu  阅读(2271)  评论(4编辑  收藏  举报