VS中的生成事件

时间:2022-10-02 12:52:20

1:为什么需要使用生成事件?

    在实际开发过程中,一个公共使用的类库,在项目生成DLL后需要被复制到不同的目录下被引用,是不是觉得每次生成之后都需要人工复制是很麻烦的一件事情

我们可以利用VS中的项目生成事件属性来进行生成后的DLL复制到指定的目录,或者进去其他的操作,比如打包成.zip的压缩包

2:怎么使用?

一、位置: 项目-->右键-->属性-->生成事件。

   VS中的生成事件

   预先生成事件就是在编译之前我需要做的事情,后期生成事件就是编译成功之后我要做的事情。

  VS中的生成事件

 二、地址: 我们看到这样的命令:

copy "$(SolutionDir)Source\Framework\bin\Debug\Configuration\SCADAServer.config" "$(TargetDir)"

 意思是将前面目录中的ScadaServer.config 文件Copy到 $(TargetDir) 目录下。而$中的内容 就是定义好的宏,点开上图中的宏字 就看到下图中已经定义好的地址宏 

VS中的生成事件

三、语法

  看到这个$ 符号想起很多

  还有Nlog中的配置,

 VS中的生成事件

 CCNet的配置。

VS中的生成事件

Wix的配置:

VS中的生成事件

放在一起看,不论是{}还是()都是表示地址的,当然这个和Jquery中$()区别还是蛮大。 扯远了,再回到正题,这里执行的命令都是dos内部命令

VS中的生成事件  View Code

比如:

VS中的生成事件
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到另外一个目录下。
VS中的生成事件