.net – 将C#项目编译成一个dll

我有一个基础项目,可以提供两个不同的项目.我希望能够让主项目在编译时将所有引用编译成一个dll.

这需要是项目构建中内置的东西,以便Jr开发人员不必担心它.

解决方案:我最后在项目的Post-build操作中添加了一行,以便良好的构建执行以下操作:

$(ProjectDir)ilmerge.exe /out: /ver: <.dll> <.dll>

ilmerge.exe被移动到项目中,上面的行获取给定的dll并创建一个.

解决方法

(此答案已编辑,以更新新下载位置的链接并反映新的见解)

您最好的选择是使用Micorosoft’s ILMerge.它曾经可以从Microsoft Research单独下载(它不是VS或.NET SDK的一部分).

original version维持到2012年.它现在是NuGet package,这是目前获得它的最佳方式,并将其添加到您的项目和构建服务器.

作为替代方案,您可能需要从CodePlex尝试ILMerge GUI,它为ILMerge提供GUI界面.它的发展被打断了,但现在再次活跃起来.

A Codeproject article on ILMerge详细介绍了如何使用它并解释了一些用例.示例命令是:

ilmerge /target:winexe /out:AllInOne.exe normalProgram.exe Lib1.dll Lib2.dll

作为替代方案,您可以将FodyCostura.Fody一起使用,如SO response中所述.

注(1):如果需要合并并排组件(即混合本机64位和32位组件),请参阅this SO article on loading side-by-side assemblies dynamically.

注意(2):要将此作为构建过程的一个不可或缺的步骤添加,只需转到项目属性>构建活动>单击“编辑后期构建”并从上面填写命令.单击“宏”以查看如何引用当前文件或程序集.

相关文章

在要实现单例模式的类当中添加如下代码:实例化的时候:frmC...
1、如果制作圆角窗体,窗体先继承DOTNETBAR的:public parti...
根据网上资料,自己很粗略的实现了一个winform搜索提示,但是...
近期在做DSOFramer这个控件,打算自己弄一个自定义控件来封装...
今天玩了一把WMI,查询了一下电脑的硬件信息,感觉很多代码都...
最近在研究WinWordControl这个控件,因为上级要求在系统里,...