DevTrain Startseite Visual Studio 1 Magazin  
  
  
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
        
Assemblyinhalte anzeigen mit Ildasm.exe

Was sind Assemblyattribute?

Für jede mit Visual Studio.NET erstellte Anwendung oder Bibliothek wird eine Datei AssemblyInfo.cs bzw .vb generiert. In diese Datei können sie Informationen über die Assembly wie Versionsnummer und Informationsattribute, einschließlich Marke, Urheberrecht, Produkt, Firma und Informationsversion, etc. schreiben. Diese Informationen nennt man Assemblyattribute.

Sie werden folgendermaßen unterteilt:

  • Assemblyidentitätsattribute
  • Informationsattribute (zusätzliche Unternehmens- oder Produktinformationen)
  • Assemblymanifestattribute (Informationen wie Titel, Beschreibung, Standardalias und Konfiguration)
  • Attribute für starke Namen.

Wie zeige ich Assemblyinhalte an?

Das .NET Framework bietet ein zusätzliches Tool für die Kommandozeile, um Assemblyinhalte anzuzeigen ? den MSIL Disassembler Ildasm.exe. Er ist zu finden im Verzeichnis %Microsoft Visual Studio .NET%\%SDK\\Bin.

Doppelklicken Sie auf Ildasm und öffnen Sie die zu untersuchende Assembly mit dem Menüpunkt Datei -> Öffnen oder geben Sie in der Eingabeaufforderung folgenden Befehl ein:
ildasm <Assemblyname>

Durch den folgenden Beispielcode wird die Assembly HalloWelt.exe geöffnet.
ildasm HalloWelt.exe

Um Informationen zu einem Assemblymanifest anzeigen zu lassen, klicken Sie auf das Manifestsymbol im Fenster MSIL Disassembler-Tool.

Beispielprogramm "Hallo Welt"

Das folgende Beispiel zeigt ein einfaches "Hallo Welt"-Programm.

[C#]
using System;
class HalloWelt {
   public static void Main() {
   Console.WriteLine("Hallo Welt!!!");
   }
}

Wenn Sie Ildasm.exe verwenden, werden Ihnen im Assemblymanifest folgende Informationen angezeigt:

.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 1:0:5000:0
}
.assembly HalloWelt
{
// --- Folg. benutzerdef. Attribut automat. hinzugefügt. Kommentare nicht entf. -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
// bool) = ( 01 00 00 01 00 00 )
.hash algorithm 0x00008004
.ver 1:0:1334:24247
}
.module HalloWelt.exe
// MVID: {6C637F57-C645-4930-A233-ACF69C22A9DB}
.subsystem 0x00000003
.file alignment 4096
.corflags 0x00000001
// Image base: 0x06f60000

Was bedeutet das?

Ein Assemblymanifest kann je nach Inhalt der Assembly mehrere verschiedene Direktiven enthalten. Eine ausführliche Liste der im Assemblymanifest enthaltenen Direktiven finden Sie in der ECMA-Dokumentation für Metadaten, die sich im Verzeichnis Tool Developers Guide von .NET Framework SDK befindet.
In der folgenden Tabelle werden alle Direktiven im Assemblymanifest des "Hallo Welt"-Beispiels beschrieben.

Direktive Beschreibung
.assembly extern <Assemblyname> Gibt eine andere Assembly an, die Elemente enthält, auf die im aktuellen Modul verwiesen wird (in diesem Beispiel mscorlib).
.publickeytoken <Token> Das Token des tatsächlichen Schlüssels der Assembly an, auf die verwiesen wird.
.ver <Versionsnummer> Versionsnummer der Assembly.
.assembly <Assemblyname> Assemblyname.
.hash algorithm <Int32-Wert> Der verwendete Hashalgorithmus.
.ver <Versionsnummer> Versionsnummer der Assembly.
.module <Dateiname> Die Namen der Module, aus denen die Assembly besteht. In diesem Beispiel besteht die Assembly aus nur einer Datei.
.subsystem Gibt die für das Programm benötigte Anwendungsumgebung an. In diesem Beispiel zeigt der Wert 3 an, dass das Programm von der Konsole aus ausgeführt wird.
.corflags Momentan ein reserviertes Feld innerhalb der Metadaten.

Hinweis:
Ildasm.exe funktioniert nur bei ausführbaren Dateien auf der Festplatte. Es kann nicht für Dateien verwendet werden, die im globalen Assemblycache installiert sind.
Ausführliche Anleitungen zum Laden einer Datei in Ildasm.exe und zum Interpretieren der Ausgabe finden Sie im Lernprogramm für Ildasm.exe. Dies ist im Lieferumfang von .NET Framework SDK enthalten und befindet sich im Ordner Samples.
Sie können Ildasm.exe für eine EXE- oder DLL-Datei ausführen, um festzustellen, ob die Datei verwaltet ist. Wenn die Datei nicht verwaltet ist, zeigt das Tool eine Meldung an, dass die Datei keinen gültigen Common Language Runtime-Header enthält und nicht disassembliert werden kann. Bei einer verwalteten Datei wird das Tool erfolgreich ausgeführt.
Zur Laufzeit erfolgt der Zugriff auf die in einer Assembly enthaltenen Informationen über die so genannte Reflection, mit der Sie unweigerlich bereits Kontakt hatten, nämlich in Form von IntelliSense unter Visual Studio .NET. Der System.Reflection-Namespace enthält viele Methoden, mit denen Sie Informationen aus einer Assembly erhalten können.
Doch das ist ein anderes Thema? ;-)
Beim nächsten Mal beschäftigen wir uns mit dem Erstellen der verschiedenen Assembly-Typen.


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

  Erfasst am: 08.09.2003
  Gültig bis: 07.12.2003
4 Ratings
Bewertung: 95,0%
schlecht    sehr gut  

 
© Copyright 2007 ppedv AG