过去几天,我一直在努力在单个可执行文件中合并程序集。这样我就可以将单个可执行文件分发给我的用户。除了ILMerge
之外,我发现ILMerge
这样做了,似乎还有更多的工具可以做到这一点。我尝试了BoxedAPP
Packer和SmartAssembly
。NetShrink
似乎运作良好,但都是付费工具。所以,我想用ILMerge
完成任务,经过大量浏览和搜索Google以及StackOverflow之后,我找到了解决方案。
我尝试了以下一组行来合并程序集
c:\"Program Files"\Microsoft\ILMerge\ILMerge.exe"
/lib:"C:\Windows\Microsoft.NET\Framework\v3.5"
/lib:"C:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE\PublicAssemblies"
/t: winexe
/target:exe
/targetplatform:v3.5,C:\Windows\Microsoft.NET\Framework\v3.5
/out:”MergedProduct.exe”
"$(TargetDir)Product.exe"
"$(TargetDir)CButtonLib.dll"
"$(TargetDir)Common Tools.dll'
"$(TargetDir)Core.dll"
"$(TargetDir)ProgressIndicator.dll"
"$(TargetDir)TaskScheduler.dll"
我在上面使用了上面这套线 Build-Events>构建后事件命令行
在构建项目之后,我获得了构建成功。同时构建应用程序时,就像我按下F5开始调试一样。总而言之,我确信上面的一行是正确的,但我无法在任何地方找到输出可执行文件(即MergedProduct.exe
)。我也尝试使用Visual Studio 9.0的Release
模式,但仍然找不到输出合并的可执行文件。
有什么东西真的很明显我错过了吗?
另外,我可以使用Product.exe.config
合并ILMerge
文件吗?
任何帮助或建议都会非常感激。
答案 0 :(得分:1)
该代码块是否是命令行的剪切和过去?我注意到你在/ out文件名周围有引号。此外,您是否尝试将文件夹添加到/ out文件名(例如$(TargetDir))?我们在构建过程中将其保存在特定的发布文件夹中。
ILMerge将允许您合并xml文档,但不能合并配置文件(据我所知)。