C#中用ILMerge合並DLL和exe文件成一個exe文件或者DLL


ILMerge是一個將多個.NET程序集合並到一個程序集中的實用程序。它既可以作為  開源使用,也可以作為NuGet包使用

如果您在使用它時遇到任何問題,請與我們聯系。(mbarnett _at_ microsoft _dot_ com)。但首先嘗試閱讀文檔

ILMerge接受一組輸入程序集並將它們合並到一個目標程序集中輸入程序集列表中的第一個程序集是主程序集當主程序集是可執行文件時,目標程序集將創建為具有與主程序集相同的入口點的可執行文件。此外,如果主程序集具有強名稱,並且提供了.snk文件,則使用指定的鍵重新簽名目標程序集,以使其具有強名稱。

ILMerge打包為控制台應用程序。但它的所有功能也可以通過編程方式獲得。

有幾個選項可以控制ILMerge的行為。有關詳細信息,請參閱該工具隨附的文檔。

注意:不再有在v1.1運行時中運行的ILMerge版本。

ILMerge在v4.0 .NET Runtime中運行,但它也能夠使用/ targetplatformoption合並來自其他框架版本的程序集。請參閱文檔。(但是,它只能為v2(及更高版本)程序集合並PDB文件。)

ILMerge僅適用於Windows,但生成的程序集同時適用於.Net和Mono。

如果使用ASP.NET v2.0,則它提供了一個工具(基於ILMerge)來組合在預編譯期間創建的程序集。您可以從ASP.NET網站獲取更多詳細信息

 

ILMerge獲取的三種方式

1、下載ILMerge,

網址:https://www.microsoft.com/en-us/download/details.aspx?id=17630,使用dos命令合並程序集

2、可以使用開源項目

網址:https://github.com/dotnet/ILMerge

3、C# 使用NuGet獲取,NuGet包使用

      Install-Package ilmerge -Version 3.0.29

 

下面本文先講述ILMerge使用dos命令合並程序集

1、下載ILMerge,

網址:https://www.microsoft.com/en-us/download/details.aspx?id=17630

網址:https://download.csdn.net/download/longtenggenssupreme/11143210

2、安裝ILMerge

 3、點擊下一步,選擇安裝路徑

4、安裝完成

 

 5、安裝以后文件目錄下內容

 

6、下面是主程序的exe以及引用的第三方類庫dll,(復制到ILMerge目錄下,方便演示)

 

7、下面使用dos合並第三方dll到exe中。

win + r 打開dos

輸入   cd..   回車,

輸入  cd..   回車,

輸入  e:    回車

輸入 cd soft  回車

輸入 cd ilmerge 回車

到此步,已經進入到了ilmerge的安裝目錄了

 

 具體的輸入格式

ILMerge的完整命令行是:

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:<version>[,<platformdir>]]|v1|v1.1|v2|v4)
[/useFullPublicKeyForReferences] [/zeroPeKind] [/wildcards] [/allowDup[:typename]]*
[/allowDuplicateResources] [/union] [/align:n]
/out:filename <primary assembly> [<other assemblies>...]

所有帶參數的選項都可以使用:=作為分隔符使用。選項可以按任何順序排列,但所有選項必須位於輸入程序集列表之前

)

 輸入合並操作

ILMerge.exe  /log:123.log /t:winexe /ndebug /out:realestatetool.exe EvMS.Common.Devices.dll Newtonsoft.Json.Net20.dll 

 

123.log 日志

 

 

可能的出現問題:

1. 合並interop這種由COM轉換過來的DLL時,一定要注意,相關依賴的DLL必須也一起合並。
2. 如果有資源DLL, 應該注意資源文件的合並。

 

官方參考文檔:documentation.

問題可以參考:https://www.microsoft.com/en-us/research/people/mbarnett/?from=http%3A%2F%2Fresearch.microsoft.com%2F~mbarnett%2Filmerge.aspx#!ilmerge

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM