DevTrain Startseite Advanced Developers Conference vom 14.-15. Februar 2011  
  
  
SUCHEN:  
ARTIKEL ONLINE: 525   

Kategorien
.NET
Datenbanken
Web
XML

Allgemein
Camp
Foren
Events
Persönliche Einstellungen
Registrieren
Prämien Shop
Kontakt
Impressum
Über DevTrain

Autoren


   Autor: Kerstin Lahr Artikel Drucken
        
Erstellen von Einfachdatei-, Bibliothek- und Mehrfachdateiassemblies

Wie erstelle ich Assemblies?

Zum Erstellen von Assemblies stehen Ihnen verschiedene Möglichkeiten zur Verfügung, je nach Art der Assemblies ? Einfachdateiassembly, Bibliothekassembly oder Mehrfachdateiassembly.

Wie erstelle ich eine Einfachdateiassembly?

Das einfachste Beispiel für eine Assembly ist eine einzelne Datei mit einem einfachen Namen, die in eine einzelne Anwendungsdomäne geladen wird.
Andere Assemblies außerhalb des Anwendungsverzeichnisses können nicht auf diese Assembly verweisen; sie wird auch keiner Versionsüberprüfung unterzogen. Um die aus der Assembly bestehende Anwendung zu deinstallieren, löschen Sie einfach das Verzeichnis, in dem sie sich befindet. Viele Entwickler benötigen zur Weitergabe einer Anwendung lediglich eine Assembly mit diesen Features.
Einfachdateiassemblies können Sie wie gewohnt mit Hilfe einer IDE wie Visual Studio .NET erstellen. Beim Kompilieren von Visual Studio .NET-Quelldateien werden solche Assemblies automatisch erstellt.

Um eine Einfachdateiassembly mit Hilfe von Befehlszeilencompilern zu erstellen, geben Sie in der Eingabeaufforderung folgenden Befehl ein:

<Compilerbefehl> /out:<Dateiname> <Modulname>

Dabei ist der Compilerbefehl der Compilerbefehl für die in Ihrem Codemodul verwendete Sprache, der Dateiname der Name der Ausgabedatei und der Modulname der Name des Codemoduls, das in die Assembly kompiliert werden soll.
Durch den folgenden Beispielcode wird aus einem Codemodul namens myCode eine Assembly namens myAssembly.exe erstellt.

[C#]
csc /out:myAssembly.exe myCode.cs
[Visual Basic]
vbc /out:myAssembly.exe myCode.vb

Wie erstelle ich eine Bibliothekassembly?

Hat die Assembly keinen Einstiegspunkt, z. B. eine Main-Methode oder WinMain-Methode, können Sie eine Bibliothekassembly erstellen.
Eine Bibliothekassembly ist ähnlich aufgebaut wie eine Klassenbibliothek. Sie enthält Typen, auf die andere Assemblies verweisen, besitzt aber keinen Einstiegspunkt, um eine Ausführung zu starten.
Durch den folgenden Beispielcode wird aus einem Codemodul namens myCode eine Bibliothekassembly namens myCodeAssembly.dll erstellt.

[C#]
csc /out:myCodeLibrary.dll /t:library myCode.cs
[Visual Basic]
vbc /out:myCodeLibrary.dll /t:library myCode.vb

Wie erstelle ich eine Mehrfachdateiassembly?

Eine Mehrfachdateiassembly ist eine Assembly, die aus mehreren Modulen besteht. Das Manifest muß gemeinsam mit dem Einstiegspunkt in einem der Module enthalten sein.
Sie erstellen eine Mehrfachdateiassembly, wenn Sie Module kombinieren möchten, die in verschiedenen Sprachen geschrieben sind, oder um das Downloaden einer Anwendung zu optimieren, indem Sie selten verwendete Typen in einem Modul ablegen, das nur bei Bedarf gedownloadet wird.
Wenn Sie Mehrfachdateiassemblies erstellen möchten, müssen Sie auf einen Befehlszeilencompiler oder Visual Studio .NET mit Managed Extensions for C++ zurückgreifen.

Beispiel:
Erstellen Sie zwei voneinander unabhängige Dateien, die unterschiedliche Namespaces aufweisen.
Zunächst werden diese beiden Module nun jeweils über die Kommandozeile mit dem Compilerschalter /target:module kompiliert. Dabei ist die Endung .netmodule die Standarderweiterung für Codemodule.

csc /target:module out:modul1.netmodule modul1.cs
csc /target:module out:modul2.netmodule modul2.cs

Jetzt bleibt nur noch, beide zu einer DLL (inklusive Manifest, also einer Assembly) zusammenzufügen. Dies geschieht über den Compilerschalter /addmodule.
Achten Sie daraauf, daß die Module im gleichen Verzeichnis liegen und daß es sich wirklich um Module handelt und nicht um Assemblies, sonst funktioniert /addmodule nicht. Mehrere Modulnamen werden über Semikola getrennt.

csc /target:library /addmodule:modul1.netmodule;modul2.netmodule /out:testlib.dll

Wenn Sie diese Library nun in einem Ihrer Projekte einbinden, werden Sie zwei Namespaces darin finden ? Modul1Namespace und Modul2Namespace. Beide Module wurden zu einer Assembly zusammengefasst und der Compiler hat das Manifest hineingeschrieben.

Was ist das Assembly Linker-Tool?

Eine andere Möglichkeit ist, mit dem Assembly Linker-Tool (Al.exe) aus einer Auflistung von kompilierten Codemodulen eine Assembly erzeugen.

Um mit dem Assembly Linker-Tool eine Mehrfachdateiassembly zu erstellen, geben Sie in der Eingabeaufforderung folgenden Befehl ein:

al <Modulname> <Modulname> .../main:<Methodenname> /out:<Dateiname>
/target:<Assemblydateityp>

Die Modulname-Argumente sind die Namen aller Module, die in der Assembly enthalten sein sollen. Die Option /main: gibt den Methodennamen an, der den Einstiegspunkt der Assembly darstellt. Die Option /out: gibt den Namen der Ausgabedatei an, die Assemblymetadaten enthält. Die Option /target: gibt an, dass die Assembly eine ausführbare Datei für eine Konsolenanwendung (.exe), eine ausführbare Windows-Datei (.win) oder eine Bibliothek ist (.lib).
Im folgenden Beispiel erstellt Al.exe eine Assembly namens myAssembly.exe, die eine ausführbare Datei für eine Konsolenanwendung ist. Die Anwendung besteht aus zwei Modulen, Modul1.netmodule und Modul2.netmodule, sowie der ausführbaren Datei myAssembly.exe, die ausschließlich Assemblymetadaten enthält. Der Einstiegspunkt der Assembly ist die Main-Methode in der myApp-Klasse.

al Modul1.netmodule Modul2.netmodule /main:myApp.Main /out:myAssembly.exe /target:exe

Das Assembly Linker-Tool kennt noch eine Menge mehr Optionen, die Sie am besten einmal in der .NET Framework SDK-Dokumentation unter dem Stichwort 'al.exe' nachlesen.
Dort werden auch die Fehler und Warnungen des Al.exe-Tools beschrieben.

Nun wissen Sie, wie Sie Einfachdateiassemblies, Bibliothekassemblies und Mehrfachdateiassemblies erstellen.
Das Erstellen einer Assembly mit einem starken Namen ist ein eigenes Kapitel, mit dem wir uns das nächste Mal beschäftigen.


DevTrain Camp - Schneller zum .NET 3.5 Developer
 
Verwandte Artikel      Verlinkte Dokumente
    Keine verknüpften Dokumente
    Keine Links vorhanden

  Erfasst am: 15.09.2003
  Gültig bis: 14.12.2003
20 Ratings
Bewertung: 33,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG