将C#项目编译为一个dll

Arn*_*j65 8 .net ilmerge visual-studio-2010

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

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


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

$(ProjectDir)ilmerge.exe /out: /ver: <.dll> <.dll>
Run Code Online (Sandbox Code Playgroud)

ilmerge.exe 被移动到项目中,上面的线路获取了dll并创建了一个.

Abe*_*bel 9

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

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

最初的版本一直保持到2012年.它现在是一个NuGet包,这是得到它目前,并把它添加到您的项目并生成服务器的最佳方式.

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

有关ILMergeCodeproject文章详细介绍了如何使用它并解释了一些用例.示例命令是:

ilmerge /target:winexe /out:AllInOne.exe NormalProgram.exe Lib1.dll Lib2.dll
Run Code Online (Sandbox Code Playgroud)

作为替代方案,可以使用FodyCostura.Fody,如本解释SO响应.


注意(1):如果需要合并并行组件(即混合本机64位和32位程序集),您应该参考这篇关于动态加载并行程序集的SO文章.

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