2016-03-31 20 views
0

Ich bin mit Visual Studio 2013Kombination Baugruppen mit Visual Studio ILMerge oder etwas anderes

Ich habe 3 C# Klassenbibliothek Projekte, A, B & C.

A Referenzen B

B referenzen C

Wenn ich das Projekt "A" im Visual Studio kompiliere und baue, sehe ich A.dll, B.dll und C.dll im bin-Ordner des Projekts "A".

Jetzt plante ich B.dll und C.dll innerhalb A.dll zu verschmelzen.

Ich habe versucht, mit ILMerge Befehl, aber die Inhalte von A. DLL sind verloren.

ilmerge /out:A.dll A.dll B.dll C.dll /targetplatform:v4 

Eine Idee, wie kann dies erreicht werden? Ich wollte B und C in A zusammenführen, ohne den Inhalt von A zu verlieren.

Danke.

+0

Versuchen Sie, Argument zu D.dll zu ändern. –

+0

@Lexi: Ja, das weiß ich, aber ich will keine neue Baugruppe. – thinkmmk

+0

dann wahrscheinlich zuerst umbenennen A nach D und dann B, C, D zu A zusammenführen –

Antwort

1

Betrachten wir ein mehrstufiges Verfahren unter Verwendung von wie durch Ausführen von drei Befehle folgt:

1. Temp Baugruppe von 3 Eingangsbaugruppen schaffen.

2. löschen Sie original libraryA.dll Assembly.

3. Umbenennen der temporären Assembly in libraryA.dll.

Beispiel:

3 Befehle in einer einzigen Zeile ausgeführt durch Verwendung "&" Separators.

C:\<somepath>\Debug>"C:\<somepath>"\ILMerge.exe /out:temp.dll libraryA.dll libraryB.dll libraryC.dll /targetplatform:v4 & del /F /Q libraryA.dll & ren temp.dll libraryA.dll 

Ausgang (in ILSpy der Einfachheit halber betrachtet):

ILSpy showing code from multiple sources merged into single assembly

WICHTIG: Sie sollten diesen Prozess betrachten folgenden nur mit Release baut. Wenn Debug-Builds mit .pdb-Dateien ausgeführt werden, wird durch die Umbenennung im 3. Schritt des Beispiels die Möglichkeit zum Debuggen der Assemblies ungültig. verwandten Informationen zu SO: here

HINWEIS: Wenn Ihre Absicht ist es, die Montage Version des ursprünglichen libraryA.dll Montage in dem Prozess pflegen Sie mehr kreative dh Quelle die Assemblierung-Version zu erhalten und vorbei anschließend die Version werden müssen zum /ver: version Argument von ILMerge.exe. Wenn Sie ILMerge als Postbuild-Ereignis ausführen, gelten die folgenden Links zum Abrufen der Version.

SO: getting version in postbuild event

SO: getting version in commandline

Hervorrufen ILMerge als postbuild SO: here diskutiert beachten

auch: Eine Frage ähnlich wie bei Ihnen wurde here ohne Beispiel anhand Antwort diskutiert.