[.NET] 使用 NuGet套件將多個DLL、EXE 檔合併成單一檔案
使用Visual Studio2022編譯後會產生三組組件檔:WindowsFormsApp2.exe、AxAltairUDrv.dll與AxAltairUDrvAsm4.5.dll,得一起部署到客戶端才能正確執行。
要實現單一EXE檔搞定,.NET有個好用工具-ILMerge,可將多個DLL、EXE檔合併成單一檔案。
在NuGet已有包成MSBuild的Task,使用msbuild.ilmerge查詢,可以找到MSBuild.ILMerge.Task
工具->NuGet套件管理員->管理方案的NuGet套件
瀏覽->搜尋 msbuild.ilmerge->將 MSBuild.ILMerge.Task安裝至專案中
安裝後專案會多出ILMerge.props、ILMergeOrder.txt兩個檔案,但大部分情況下不需修改,重建方案並編譯就好。
重新編譯完成後可發現dll不見了,僅剩一個EXE檔案,使用時只需copy此檔案即可。
補充:MSBuild.ILMerge.Task預設會將參考到的DLL都包進EXE檔,如果想略過特定DLL,可將DLL的Copy 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/