ILMerge已弃用,如何在Visual Studio项目中手动安装或替换它?
解决方案
一、手动添加ILMerge 3.0.41到项目
当然可以手动将旧版本的ILMerge加入项目,步骤如下:
- 从旧机器复制ILMerge包文件:找到旧机器上的NuGet缓存目录
%userprofile%\.nuget\packages\ilmerge\3.0.41,把整个3.0.41文件夹复制出来 - 在新项目的解决方案根目录下,创建一个本地NuGet源文件夹(比如命名为
LocalNuGetPackages) - 将复制的
3.0.41文件夹放到LocalNuGetPackages\ilmerge\路径下 - 在Visual Studio中,打开「工具」→「选项」→「NuGet包管理器」→「包源」,点击加号添加本地源,路径指向刚才创建的
LocalNuGetPackages文件夹 - 回到项目的NuGet包管理器,就能找到并安装ILMerge 3.0.41
- 若不想配置本地源,也可以直接把ILMerge.exe及相关依赖文件复制到项目目录,然后在项目的生成后事件命令行中手动调用合并命令,示例:
"$(ProjectDir)ilmerge.exe" /out:"$(TargetDir)YourApp.exe" "$(TargetPath)" "$(ProjectDir)Dependencies\*.dll"
二、替代ILMerge的工具
如果不想依赖旧版本ILMerge,这些工具可以替代:
- ILRepack:完全兼容ILMerge的命令行参数,开源且持续维护,直接通过NuGet安装即可,使用逻辑和ILMerge几乎一致
- Costura.Fody:借助Fody编织器在编译阶段自动将依赖DLL合并到主程序集,无需手动写命令,安装NuGet包后,在
FodyWeavers.xml中添加Costura节点即可完成配置 - 单文件发布(.NET Core/.NET 5+):如果项目已升级到.NET Core或更高版本,直接在Visual Studio项目属性的「发布」选项中勾选「生成单个文件」,就能自动打包所有依赖为单个EXE
- DotNetMerge:针对.NET Core的专用合并工具,支持命令行操作,适合自动化构建场景
内容的提问来源于stack exchange,提问作者Bob S
相关产品推荐
相关产品推荐

