若是說磨刀不誤砍柴工,一樣用好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