Visual Studio 生成事件這件小事
- 2019 年 10 月 22 日
- 筆記
在上一篇《Visual Studio 調試技巧》中,介紹了一些VS常用的調試操作,今天,聊一聊VS當中一個不太常見,但有時又有妙用的操作——VS生成事件。
一、什麼是VS生成事件
簡單來說,VS生成事件就是在編譯項目的過程中發生的一些事件。根據事件發生的時機,允許自定義一些操作。
VS生成事件可以在項目上右鍵,選擇屬性菜單後看到。VS生成事件分為以下兩大部分:
1. 生成前事件命令行,可以指定在項目編譯之前執行的一些命令行操作。
通過點擊編輯預先生成按鈕,可以編輯生成前事件命令行。其中宏按鈕允許插入一些預定義變數,可以代表文件路徑。
2. 生成後事件命令行,可以指定在項目編譯之後執行的一些命令行操作。
運行後生成事件可以指定運行生成後事件的發生條件。
簡單了解VS生成事件之後,再以真實案例說明下VS生成事件的運用。
二、VS生成事件應用
1.使用xcopy拷貝dll
在實際的開發過程中,有時需要使用C#調用C++ dll。然而,C++ dll 分為x86和x64版本。C#程式運行時,需要依據作業系統的類型載入合適版本的dll。這個時候,一個解決方案就是,將公有位置上x86和x64版本的C++ dll ,通過VS生成事件,使用xcopy命令拷貝到程式生成目錄的x86和x64文件夾下面,C#程式啟動時,自動從x86或x64文件夾下拷貝合適版本的C++ dll。具體命令行實例如下:

1 /// <summary> 2 /// author LightSmaile 3 /// </summary> 4 private void CheckBlogPosition() 5 { 6 if(thisBlogPostion != "cnblogs") 7 { 8 Console.WriteLine("this blog has been crawled!"); 9 } 10 }
View Code
2.自動修改程式安裝包圖標
VS可以製作程式安裝包,默認生成setup.exe以及setup.msi。由於setup.exe的圖標不能在製作程式安裝包的項目當中指定,所以萌生了藉助VS生成事件,調用第三方工具替換setup.exe的圖標的想法。
經過一番搜索,發現 ResourceHacker 既可以支援介面操作,也可以支援命令行操作。仔細閱讀相關說明後,得出如下事件命令行:
需要注意的是,程式安裝包似乎沒有VS編譯事件,可以新建一個空項目,並填寫事件命令行內容。通過右鍵,將製作安裝包項目設置為新建空項目的項目依賴項。
三、寫在最後
以上只是VS事件的簡單介紹,可以依據項目實際需求,具體調整事件命令行內容。原則上來講,cmd命令行支援的內容,VS事件命令行也會支援。
特別聲明:本文版權歸本人以及部落格園所有,禁止任何未授權個人以及網站部分或全部使用。