2010-01-06 9 views
12

Ist es möglich, meine C# -Lösungsdatei zu zwingen, eine einzelne DLL zu erstellen, die alle Projekte in der Projektmappe statt einer DLL pro Projekt enthält? This dude sagt, dass das nicht möglich ist, aber ich bemerke, dass es ein Beitrag von 2004 ist. Ich benutze Visual Studio 2008 Team System und es ist eine C# -Anwendung.eine DLL, mehrere Projekte?

Antwort

20

Nein. Jedes Projekt wird in eine separate Bibliothek oder Anwendung kompiliert.

Sie können diese jedoch zusammen in eine einzelne DLL oder EXE-Datei unter Verwendung ILMerge nach der Kompilierung zusammenführen.

0

Es ist möglich, und es war sogar möglich, im Jahr 2004

Allerdings ist Visual Studio nicht aussetzen.

Sie müssen netmodules verwenden.

+1

Sind Sie sicher? Das sieht so aus, als ob es eine Multimodul-Baugruppe (eine Baugruppe, die mehrere DLLs verwendet) erzeugt, keine einzige DLL. –

+0

Es ist immer noch eine einzelne DLL. – SLaks

0

Sie könnten ein MSBuild-Skript erstellen, das XSLT verwendet, um alle csproj-Dateien zu einem zu kombinieren und dann zu erstellen. Sie müssen keine cs-Dateien oder ähnliches kopieren, sondern nur eine neue csproj-Datei dynamisch erzeugen.

14

Es ist nicht direkt mit Visual Studio möglich, aber Sie können Assemblys unter Verwendung von ILMerge zusammenführen. Dies könnte z.B. erfolgte in einem Post-Build-Schritt:

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

Wenn Ihr Projekt ein ASP.Net Projekt ist, dass Sie auf den ASP.NET Merge Tool verlassen können.

0

es nie persönlich getan, aber sieht aus wie dieses Werkzeug könnte das passieren:

ILMerge