用 ILMerge 將多個 .NET 組件合併成單一組件或執行檔
因為先前曾嘗試用 SharpDevelop 寫網路廣播收聽程式, 編譯後除了主程式的執行檔外還會另外產生有引用到的組件的 dll 檔,如下圖:
但卻發現 TimeRadio 這支程式居然可以弄成單一執行檔而留言詢問。感謝該軟體的作者芭樂哥哥的回覆分享而得知 ILMerge 這個好用的命令列工具,讓我也能達成目的。
http://research.microsoft.com/en-us/people/mbarnett/ILMerge.aspx
安裝後程式會放在 C:\Program Files\Microsoft\ILMerge\ 目錄,直接執行會顯示可用參數
C:\>”c:\Program Files\Microsoft\ILMerge\ILMerge.exe”
Usage: ilmerge [/lib:directory]* [/log[:filename]] [/keyfile:filename [/delaysign]] [/internalize[:filename]] [/t[arget]:(library|exe|winexe)] [/closed] [/ndebug] [/ver:version] [/copyattrs [/allowMultiple]] [/xmldocs] [/attr:filename] [/targetplatform:
以我的環境狀況就是執行下列指令
“c:\Program Files\Microsoft\ILMerge\ILMerge.exe” /ndebug /out:netR.exe netRadio.exe Interop.WMPLib.dll
然後就如下圖所示得到一個 netR.exe 的單一執行檔,就可以拿來作分發部署了,不過 .NET Framework 還是要裝的。
另外也有人寫出視窗介面版來簡化操作
ILMerge-GUI, merge .NET assemblies
http://ilmergegui.codeplex.com/
Leave a Reply