The Artima Developer Community
Sponsored Link

.NET Buzz Forum
ILMerge im Einsatz

0 replies on 1 page.

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 0 replies on 1 page
-

Posts: 1524
Nickname: nitronic
Registered: Jul, 2006

Norbert Eder works as a software architect.
ILMerge im Einsatz Posted: Feb 18, 2007 10:45 AM
Reply to this message Reply

This post originated from an RSS feed registered with .NET Buzz by -.
Original Post: ILMerge im Einsatz
Feed Title: Norbert Eder - Living .NET
Feed URL: http://feeds.feedburner.com/NorbertEder-Livingnet
Feed Description: Copyright (c)2005, 2006 by Norbert Eder
Latest .NET Buzz Posts
Latest .NET Buzz Posts by -
Latest Posts From Norbert Eder - Living .NET

Advertisement
Mit Hilfe des ILMerge-Tools k��nnen mehrere Assemblies zu einer einzigen Assembly zusammengef��gt werden. Vor allem bei gr����eren Projekten entsteht nicht nur eine einzige ausf��hrbare Datei. Durch die Kapselung der Funktionalit��t in unterschiedliche Bibliotheken werden diese als eigenst��ndige Assemblies abgelegt.

In einigen F��llen kann es nun erw��nscht sein, diese Dateien in eine einzige zusammen zu fassen. Ein Paradebeispiel w��re die Vereinfachung des Deployment-Prozesses, da in diesem Fall lediglich eine "Anwendungsdatei" ber��cksichtigt werden muss (abgesehen von anderen Dateien, Einstellungen, etc. die ausgeliefert werden m��ssen).

Als Beispiel dient eine simple Anwendung, die nur eine Funktionalit��t besitzt: das Multiplizieren zweier Integer-Werte. Daf��r wurde zus��tzlich zur Windows Forms Anwendung eine Klassenbibliothek angelegt. Darin enthalten ist die Klasse Calculator.



Nach einem Build im Release-Modus werden die Dateien ILMergeDemo.exe und IlMergeDemo.Core.dll angelegt. Diese fassen wir nun zu einer einzigen Assembly zusammen. Dies geschieht mit dem folgenden Aufruf:

ILMerge.exe /t:winexe /out:ILMergeDemoMerged.exe ILMergeDemo.exe ILMergeDemo.Core.dll

ILMerge selbst ist eine Konsolen-Anwendung, die mittels Parameter gesteuert werden kann:

/t:filename bzw. /target:filename
Hiermit wird eingestellt, ob es sich um eine Windows Anwendung, eine Konsolenanwendung oder eine Klassenbibliothek handelt. Wird dieser Parameter nicht angegeben, entspricht der Ausgabetyp dem Typ der ersten Assembly (Primary Assembly), die der Ausgabe hinzugef��gt wird.

/out:filename
Dadurch wird der Name des Ziels angegeben.

/v1 oder /v1.1 oder /v2
Diese Option ist nur bei ILMerge f��r das .NET Framework 2.0 verf��gbar. Damit kann eine Assembly gelinkt werden, die auch unter einer anderen Framework-Version lauff��hig ist.

/log:filename
F��r eine automatisierte Verwendung bietet sich der Parameter /log an. Durch ihn kann die Ausgabe des Vorgangs in eine anzugebende Logdatei geschrieben werden. Etwaige Fehler k��nnen dadurch zu einem sp��teren Zeitpunkt gefunden und analysiert werden.

Nat��rlich k��nnen noch weitere Parameter angegeben werden. Diese k��nnen der Dokumentation zu ILMerge entnommen werden (ist im Download enthalten).

Vergleich mittels Reflector for .NET

Sehen wir uns die Beispielanwendung in Lutz Roeder's Reflector for .NET an, sind die beiden Assemblies extra ausgewiesen:



Nach dem Merge-Vorgang ist ersichtlich, dass sich alles in einer einzigen Assembly befindet:



Was passiert mit den Ressourcen?

ILMerge kann Ressourcen nicht zusammenf��hren, sondern lediglich kopieren, was bei der Ausf��hrung auch passiert. Nun kann es bei der Laufzeit der zusammengef��hrten Assembly zu Fehlern kommen. Dies ist beispielsweise dann der Fall, wenn die Ressourcen Referenzen zu Typen kodieren. Diese k��nnen danach nicht mehr aufgel��st werden: Die Referenz verweist auf die urspr��ngliche Assembly, die es nach dem Merge-Vorgang nicht in der "Sammel-Assembly" gibt.

Kann ich ILMerge direkt in ein Projekt einbinden?

Mit Visual Studio 2005 ist es m��glich, ausf��hrbare Assemblies als Referenz einzubinden. Dadurch kann ILMerge.exe in ein anderes Projekt quasi als Klassenbibliothek eingebunden werden.

Weitere Informationen

Kommerzielle Nutzung: Eine kommerzielle Nutzung von ILMerge ist laut Lizenz m��glich.

PDB-Dateien zusammenf��hren: ILMerge kann auch PDB-Dateien (Debug-Informationen und Projektstatus) zusammenf��hren. Hierbei ist zu beachten, dass ILMerge f��r .NET 2.0 nur 2.0er PDB-Dateien zusammenf��hren kann. Jedoch k��nnen Assemblies fr��herer Versionen zusammengef��hrt werden. Mit ILMerge f��r das .NET Framework 1.1 k��nnen auch PDB-Dateien der 1.1er Version zusammengef��hrt werden.

Mono und Rotor: Bis zum aktuellen Zeitpunkt unterst��tzt ILMerge weder Rotor noch Mono.

GUI: F��r ILMerge gibt es zur Erleichterung grafische Oberfl��chen von diversen Anbietern. Eine kostenlose Variante ist NuGenUnify.

Die zur Zeit aktuelle Version kann ��ber das Microsoft Download Center bezogen werden.

Read: ILMerge im Einsatz

Topic: "iText in Action" Review Previous Topic   Next Topic Topic: 101 Ways to Manipulate the DataGridView Control

Sponsored Links



Google
  Web Artima.com   

Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use