將ILMerge全自動化,在每次編譯時全自動整併DLL

在開發專案的時候,大家應該會使用到很多外部的DLL函式庫,如果涉及到自己開發完成的DLL要被別人引用時,此時就會遭遇到把各家DLL打包成單一DLL檔案的需求,此時微軟本家的ILMerge自然是首選了。ILMerge的CLI介面其實也沒太複雜,煩人的是每次專案有修正,就要「記得」再額外下一次指令將專案引用的DLL全部打包,這樣的作法不免煩人,是否有更懶惰的作法?

在VisualStudio每次編譯的時候,重新整併成單一DLL

在NuGet有一個套件名為「MSBuild.ILMerge.Task」的套件可以解決這樣的問題,非常的好用,以下是安裝的步驟:

Step 1. 在Visual Studio中的DLL類別專案上點選右鍵,選擇「管理NuGet套件」,然後在搜尋框打入MSBuild.ILMerge.Task,然後再點選「安裝」。

Step 2. 在方案總管視窗中,你的DLL類別專案下會出現兩個檔案:ILMerge.props、ILMergeOrder.txt,看看就好,沒有特別需求就不需要去動他。

Step 3. 之後每次點選執行,VS會在編譯時期自動化將你這個專案的DLL自動整併成單一DLL檔案了,簡單完成收工。

補充說明

這個做法應該是目前我認知中最懶惰的ILMerge作法,連下載安裝ILMerge這個動作都省了,缺點應該是沒辦法因地制宜的調整一些參數,這部分等待日後有遭遇到再來研究。

相關連結

  1. 將DLL包含到單一EXE檔案內
  2. 將ILMerge全自動化,在每次編譯時全自動整併DLL
ILMerge 超級懶惰作法 懶人作法 一鍵完成