ilmerge工具合併多個DLL或EXE

2021-07-14 11:37:49 字數 1397 閱讀 4174

這是乙個微軟提供的合併多個dll 或是將dll合併進exe的工具

合併成dll:

c:\program files (x86)\microsoft\ilmerge>ilmerge /log /t:dll /out:d:\temp\myexcel\bobatools.dll d:\product\ilolidll\ilolidll\bin\debug\npoi.dll d:\product\ilolidll\ilolidll\bin\debug\ilolidll.dll

(最後二個是要合併的原始檔,多個原始檔之間用空隔隔開。在dll合併過程中可能自己寫的dll會要用到這個icsharpcode.sharpziplib.dll,這個dll 是dll專案生成後會與dll檔案在同一目錄下的。如果沒有這個檔案請重新生成你的dll專案,以便出這個icsharpcode.sharpziplib.dll檔案,否則合併可能失敗)

合併成exe:

ilmerge /ndebug /target:exe /targetplatform:v1.1 /out:newclient.exe oldclient.exe /log autoupdater.dll dockingsuite.dll documentmanager.dll filehelpers.dll outlookbar.dll sandbar.dll icsharpcode.sharpziplib.dll

解釋如下:

/target: [必須有的選項]可以簡寫為 /t: 指定輸出元件的型別,有dll/exe/winexe; (如果是exe,則程式在執行的時候將出現乙個dos視窗(即使是winform的程式). 因此應該設定target為winexe)

/targetplatform:[可以沒有] 輸出元件的.net執行版本;

/out: [必須有的選項]合併後的元件全名;

/log: [可以沒有] 螢幕上顯示過程日誌

後面是主要的被合併的元件名稱, 及相關所有的其它dll;

上面的示例只是合併為exe, 也可以多個dll合併成乙個dll使用, 各自的命名空間不會改變;

1. 不能合併interop這種由com轉換過來的dll; (可以合併,但相關依賴的dll必須也一起合併, 第一次合併的時候只有excel.dll,總是報錯,以為是interop的緣故,後來才發現是沒有合併vbide.dll的緣故,複製到目錄再一起合併,一切ok.)

2. 如果有資源dll, 應該將要被合併的oldclient.exe先改為別的名稱,然後合併後的輸出命名為:oldclient.exe,因為資源檔名是:oldclient.resources.dll,而ilmerge不能合併資源檔案,否則在匯出後將找不到此資源檔案。(如果哪位知道如何合併資源檔案,請指教,謝謝)

3. 雖然合併後的exe比較大,但在使用者那裡只有乙個exe,這樣直觀的多,也容易公升級維護.

頂0

ILMerge合併多個DLL

如果你的專案要提供多個dll給別人用,那麼不妨讓你的dll合併為乙個,讓別人看起來簡潔,引用起來不會過於繁瑣。本篇比較少,但也算是比較實用吧。場景 c盤有2個dll,分別為 c a.dll c b.dll 結果 合併為c c.dll 具體操作 首先我的ilmerge安裝到啦c盤的路徑為 c prog...

ILMerge合併多個DLL

如果你的專案要提供多個dll給別人用,那麼不妨讓你的dll合併為乙個,讓別人看起來簡潔,引用起來不會過於繁瑣。本篇比較少,但也算是比較實用吧。場景 c盤有2個dll,分別為 c a.dll c b.dll 結果 合併為c c.dll 具體操作 首先我的ilmerge安裝到啦c盤的路徑為 c prog...

ilmerge合併多個元件 更新

年初的一篇文章中提到過一下 現在已經支援.net 2.0的版本了.最近由於開發乙個客戶端程式用到多個dll,因此考慮使用ilmerge來合併成乙個,這兩天試了一下.乙個簡單的示例如下 ilmerge ndebug target exe targetplatform v1.1 out newclien...