1:为什么需要使用生成事件?
在实际开发过程中,一个公共使用的类库,在项目生成DLL后需要被复制到不同的目录下被引用,是不是觉得每次生成之后都需要人工复制是很麻烦的一件事情
我们可以利用VS中的项目生成事件属性来进行生成后的DLL复制到指定的目录,或者进去其他的操作,比如打包成.zip的压缩包
2:怎么使用?
一、位置: 项目-->右键-->属性-->生成事件。
预先生成事件就是在编译之前我需要做的事情,后期生成事件就是编译成功之后我要做的事情。
二、地址: 我们看到这样的命令:
copy "$(SolutionDir)Source\Framework\bin\Debug\Configuration\SCADAServer.config" "$(TargetDir)"
意思是将前面目录中的ScadaServer.config 文件Copy到 $(TargetDir) 目录下。而$中的内容 就是定义好的宏,点开上图中的宏字 就看到下图中已经定义好的地址宏
三、语法
看到这个$ 符号想起很多
还有Nlog中的配置,
CCNet的配置。
Wix的配置:
放在一起看,不论是{}还是()都是表示地址的,当然这个和Jquery中$()区别还是蛮大。 扯远了,再回到正题,这里执行的命令都是dos内部命令
View Code
比如:
if not exist "$(TargetDir)AudioSource" md "$(TargetDir)AudioSource" // 如果不存在AudioSource目录 就创建改目录
copy "$(SolutionDir)Source\Model\AlarmHandle\Audio\ALARM1.WAV" "$(projectDir)$(OutDir)\AudioSource\ALARM1.WAV //然后将WAV文件copy到 这个目录下(要包含文件名)。
....
call "C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\vcvarsall.bat" // 还可以调用bat文件。
xcopy /s /y "$(SolutionDir)packages\Microsoft.SqlServer.Compact.4.0.8876.1\NativeBinaries\amd64\*.*" "$(TargetDir)amd64"// xcopy 将目录下非空的目录和子目录都copy到另外一个目录下。