AISYS VISION
About us News Products download Technology Contact us
Sitemap Home Chinese English
Technology Questions

[.NET] 使用 NuGet套件將多個DLL、EXE 檔合併成單一檔案

使用Visual Studio2022編譯後會產生三組組件檔:WindowsFormsApp2.exeAxAltairUDrv.dllAxAltairUDrvAsm4.5.dll,得一起部署到客戶端才能正確執行。

 

要實現單一EXE檔搞定,.NET有個好用工具-ILMerge,可將多個DLLEXE檔合併成單一檔案。

NuGet已有包成MSBuildTask,使用msbuild.ilmerge查詢,可以找到MSBuild.ILMerge.Task

工具->NuGet套件管理員->管理方案的NuGet套件

瀏覽->搜尋 msbuild.ilmerge-> MSBuild.ILMerge.Task安裝至專案中

安裝後專案會多出ILMerge.propsILMergeOrder.txt兩個檔案,但大部分情況下不需修改,重建方案並編譯就好。

重新編譯完成後可發現dll不見了,僅剩一個EXE檔案,使用時只需copy此檔案即可。

補充:MSBuild.ILMerge.Task預設會將參考到的DLL都包進EXE檔,如果想略過特定DLL,可將DLLCopy Local屬性設為False即可排除。

資料來源 : https://www.nuget.org/packages/MSBuild.ILMerge.Task/2.0.0-pre501

                https://blog.miniasp.com/post/2009/08/07/Useful-tool-ILMerge

                https://blog.darkthread.net/blog/ilmerge-task-on-vs/

Copyright ©2008 Internet Service by
AISYS Vison company.