2010-01-06 120 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