在上一篇《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 }
2.自動修改程序安裝包圖標
VS可以制作程序安裝包,默認生成setup.exe以及setup.msi。由於setup.exe的圖標不能在制作程序安裝包的項目當中指定,所以萌生了借助VS生成事件,調用第三方工具替換setup.exe的圖標的想法。
經過一番搜索,發現 ResourceHacker 既可以支持界面操作,也可以支持命令行操作。仔細閱讀相關說明后,得出如下事件命令行:
需要注意的是,程序安裝包似乎沒有VS編譯事件,可以新建一個空項目,並填寫事件命令行內容。通過右鍵,將制作安裝包項目設置為新建空項目的項目依賴項。
三、寫在最后
以上只是VS事件的簡單介紹,可以依據項目實際需求,具體調整事件命令行內容。原則上來講,cmd命令行支持的內容,VS事件命令行也會支持。
特別聲明:本文版權歸本人以及博客園所有,禁止任何未授權個人以及網站部分或全部使用。