[實用篇] 使用ILMerge合併多個dll組件整合成單一組件

姜志民 2018/05/07 10:00:00
5744

[實用篇] 使用ILMerge合併多個dll組件整合成單一組件


簡介

.net專案使用愈多dll組件,在日後的維護管理上會愈不便利。這次要介紹使用ILMerge工具,將多個dll組件合併成一個dll組件增加維護管理上的便利性。 ILMerge除了可以將多個dll組件合併成一個dll組件之外,還可以將多個dll組件整合到單一執行檔內,不須再將多個dll組件與執行檔放置在同一個資料夾之內就可以執行。

作者

姜志民


一、範例一:整合自製dll組件與nuget上的組件

 
a.在選擇專案時,選擇「類別庫」如下圖:
 
 
b.建立一個Student的class,並使用nuget安裝Newtonsoft.Json套件,如下圖:
 
 
c.進行「建置」後,在專案的資料夾會有「類別庫」的dll與Newtonsoft.Json,如下圖:
 
 
d. 下載ILMerge並安裝,https://www.microsoft.com/en-us/download/details.aspx?id=17630
 
 e.在「命令提示字元」輸入底下指令進行組件的合併。/out是合併後輸出的新dll名稱,後面接著合併的dll組件。
 
ILMerge.exe /targetplatform:"v4,c:\windows\Microsoft.NET\Framework\v4.0.30319" /out:MyLibrary.dll MyClassLibrary.dll Newtonsoft.Json.dll
 
 
f.在資料夾會產生新的dll組件,如下圖:

二、使用JustDecompile進行組件反組譯

 
a.下載JustDecompile並安裝,https://www.telerik.com/products/decompiler.aspx。
 
b.使用JustDecompile反組譯工具打開剛剛合併的MyLibrary.dll組件檔案,可以看到MyClassLibrary.dll與Newtonsoft.Json.dll,如下圖:
 

三、範例二:合併多個dll組件整合到單一執行檔

 
a.在選擇專案時,選擇「Window Form應用程式」如下圖:
 
 
 
b.使用nuget安裝Newtonsoft.Json套件,在Form1的class新增一個按鈕事件,並使用Json物件,如下圖:
 
 
 
e.在「命令提示字元」輸入底下指令進行組件的合併。/out是合併後輸出的新執行檔名稱,後面接著要合併的主要程式,再來是接著dll組件。
 
ILMerge.exe /targetplatform:"v4,c:\windows\Microsoft.NET\Framework\v4.0.30319" /out:App.exe WindowsFormsApplication1.exe Newtonsoft.Json.dll
 
 
 
f.在資料夾會產生新的App.exe執行檔,如下圖:
 
 
g. 現在將 App.exe 執行檔就可以單獨直接執行。
 

四、使用JustDecompile進行組件反組譯

 
a.使用JustDecompile反組譯工具打開剛剛合併的App.exe執行檔,可以看到所寫的按鈕事件程式碼與Newtonsoft.Json.dll,如下圖:
姜志民