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內部命令

比如:
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到另外一個目錄下。