如何将多个程序集合并为一个?

如何将多个程序集合并为一个?

我使用EXE项目(azure应用程序的启动任务)使用我的服务堆栈,因为我已将以下服务堆栈的DLL和一些Azure的DLL复制到EXE项目中。

当我构建这个EXE项目时,Azure DLL将与我的EXE捆绑在一起但服务堆栈的DLL不会与EXE捆绑在一起,因为要在任何机器上运行我的EXE,我需要手动复制所有服务堆栈的DLL。

我已经使用了这个服务栈的dll来使用

JsonServiceClient client = new JsonServiceClient(servicepath);

我应该怎么做才能将所有这些DLL捆绑到我的EXE中?


慕雪6442864
浏览 744回答 3
3回答

GCT1015

您正在寻找的工具称为ILMerge。它是一个命令行工具,可以像这样使用:ilmerge /target:winexe /out:MyApp.exe          MyExe.exe ServiceStack.dll ServiceStack.Interfaces.dll ServiceStack.ServiceInterface.dll  ServiceStack.Text.dll还有一篇文章介绍了如何在此处将ILMerge包含到VS项目设置中

回首忆惘然

将引用的程序集包含为嵌入式资源的一个很棒的工具是Costura(一个Fody插件)。作者Simon Kropp将其描述如下:[...]两种方法的组合:Jeffrey Richter建议使用嵌入式资源作为合并程序集的方法Einar Egilsson建议使用cecil创建模块初始化器结果是一个超级简单的解决方案,只需要从NuGet 获取Costura.Fody。特征:包括调试符号压缩嵌入式组件包括/排除特定组件其他(见自述)
打开App,查看更多内容
随时随地看视频慕课网APP