2010-01-06 95 views
12

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

回答

20

不可以。每个项目都会编译成一个单独的库或应用程序。

你可以,但是,合并在一起到这些使用ILMerge后编译一个DLL或EXE文件。

0

这是可能的,它在2004年

甚至可能但是,Visual Studio的不公开它。您需要使用netmodules

+1

你确定吗?看起来它创建了一个多模块程序集(一个程序集使用多个dll),而不是一个dll。 – 2010-01-06 22:28:25

+0

它仍然是一个单一的DLL。 – SLaks 2010-01-06 22:31:16

0

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

14

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

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

如果你的项目,你可以依靠ASP.NET Merge Tool一个ASP.Net项目。

0

从来没有亲自做过,但看起来是这样的工具可以做到这一点:

ILMerge