一个DLL,多个项目?

Posted

技术标签:

【中文标题】一个DLL,多个项目?【英文标题】:one DLL, multiple projects? 【发布时间】:2010-01-06 22:20:37 【问题描述】:

是否可以强制我的 C# 解决方案文件创建一个包含解决方案中所有项目的单个 DLL,而不是每个项目一个 DLL? This dude 说这是不可能的,但我注意到这是 2004 年的帖子。我使用的是 Visual Studio 2008 Team System,它是一个 C# 应用程序。

【问题讨论】:

【参考方案1】:

没有。每个项目都将编译成一个单独的库或应用程序。

但是,您可以使用 ILMerge 编译后将它们合并到一个 DLL 或 EXE 文件中。

【讨论】:

【参考方案2】:

无法直接使用 Visual Studio,但您可以使用 ILMerge 合并程序集。这可以例如在构建后步骤中完成:

ilmerge /target:winexe /out:SelfContainedProgram.exe 
    Program.exe ClassLibrary1.dll ClassLibrary2.dll

如果您的项目是 ASP.Net 项目,您可以依赖 ASP.NET Merge Tool。

【讨论】:

【参考方案3】:

这是可能的,甚至在 2004 年也是可能的。

但是,Visual Studio 不会公开它。

您需要使用netmodules。

【讨论】:

你确定吗?看起来它创建了一个多模块程序集(一个使用多个 dll 的程序集),而不是单个 dll。【参考方案4】:

您可以创建一个 MSBuild 脚本,该脚本使用 XSLT 将所有 csproj 文件合并为一个,然后构建它。您不需要复制 cs 文件或类似的东西,只需动态生成一个新的 csproj 文件即可。

【讨论】:

【参考方案5】:

从未亲自做过,但看起来这个工具可以做到这一点:

ILMerge

【讨论】:

以上是关于一个DLL,多个项目?的主要内容,如果未能解决你的问题,请参考以下文章

多个 C++ .lib 项目到 .dll 项目,Lua 崩溃!

在VS中,一个类能被多个项目引用吗?

包含来自 DLL 的标头的理想方法?

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

c#如何将一个类库打包成两个dll

利用VSS高效管理项目DLL1