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

标签 .net visual-studio-2010 ilmerge

我有一个支持两个不同项目的基础项目。我希望能够让主项目在编译时将所有引用编译为一个 dll。

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

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

$(ProjectDir)ilmerge.exe /out: /ver: <.dll> <.dll>
ilmerge.exe已移至项目,上面的行采用给定的 dll 并创建一个。

最佳答案

(编辑此答案以更新指向新下载位置的链接并反射(reflect)新见解)

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

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

作为替代方案,您可能想尝试 ILMerge GUI来自 CodePlex,它为 ILMerge 提供了一个 GUI 界面。它的发展被中断,但现在又活跃起来。

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):要将其作为构建过程的一个完整步骤,只需转到“项目属性”>“构建事件”> 单击“编辑后构建”并填写上面的命令。单击“宏”以查看如何引用当前文件或程序集。

关于.net - 将一个 C# 项目编译成一个 dll,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6941932/

相关文章:

.net - 如何将 WSDL 添加到 Visual Studio 2005 项目?

.NET:Web 服务文档的自定义格式?

c++ - 如何使用 LibSoX 混合两个 wav 文件

c++ - 更正 size_t : %zu or %Iu? 的 printf 格式说明符

windows-phone-8 - ILMerge 错误 Windows Phone 8 未解析的程序集引用

C# 库尔德语言本地化

c# - 为什么这行得通?

Silverlight 项目在运行时未更新

c# - 是否有适用于 Mono 的 ILMerge 等效工具?

c# - 将DLL合并到EXE中?