若是说磨刀不误砍柴工,一样用好Visual Studio,会大大增长咱.NET程序猿效率。本文说的就是Visual Studio中的生成事件,在解决方案下右击某个项目而后选择 “属性” 打开窗口后便可看到 “生成事件” 选项,这个东西其实并不经常使用,甚至写几年代码都不会碰它一次,可是我今天须要她了。spa
2014.10.23更新:记得使用的时候有些目录可能没法写入,以管理员身份运行Visual Studio,并确认写入到的目录的权限问题。命令行
我有一个解决方案IdleTest,还有另外一个解决方案下的项目需用到IdleTest最新的dll,而原IdleTest下生成的dll因为还有其余项目也在用,故须要将IdleTest解决方案的几个项目生成的dll拷贝到一个新的目录。可是每次修改声称拷贝很麻烦,因而乎就想到了生成事件,百度说生成事件里的命令行是支持dos命令的,我就尝试了在后期生成事件命令行中输入 “copy [源文件全路径] 拷贝到的路径”,果真奏效。
可是我须要将多个项目生成的dll都拷贝到新的路径下,这样一来这个“[源文件全路径]”就显得很麻烦,没有体现复用性,有木有更好的办法呢?
打开生成事件中的宏以下图所示3d
能够看到有一个列表(含有“宏”和“值”列),而“宏”下的“TargetPath”对应的值就是当前项目生成的 dll/exe 文件对应的物理路径,双击该行,在上方的方框中就出现了“$(TargetPath)”,好了不罗嗦了。
直接在每一个项目的生成事件窗口中的“后期生成事件命令行”写下“copy $(TargetPath) E:\projects\MyDemo\JoeyLibs\IdleTest\dlls”,并在下方的 “运行后期生成事件” 选择 “成功生成时” 搞定。code
这个功能我还用来干一件事,就是当解决方案下又数十个项目时,我会在生成的最后一个项目(通常是UI或者服务)用到,操做与上文相似,只是命令变成了:blog
@echo msgbox "[$(ProjectName)]生成已完成!">msg.vbs @msg.vbs @del msg.vbs
这样在缓慢的项目生成过程当中就能够1024,生成完成又能够立刻继续coding。事件
关于生成事件目前我只用到这两点,若是你有更好的使用场景不妨分享下。get