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事件命令行也會支援。

特別聲明:本文版權歸本人以及部落格園所有,禁止任何未授權個人以及網站部分或全部使用。