Freigeben über


Anzeigen von Assemblyinhalten

Verwenden Sie das MSIL Disassembler-Tool (Ildasm.exe), um MSIL (Microsoft Intermediate Language)-Informationen in einer Datei anzuzeigen. Wenn es sich bei der untersuchten Datei um eine Assembly handelt, können diese Informationen Assemblyattribute sowie Verweise auf andere Assemblies und Module enthalten. Diese Informationen können Ihnen helfen herauszufinden, ob eine Datei eine Assembly bzw. Teil einer Assembly ist und ob sie Verweise auf andere Module oder Assemblies enthält.

So zeigen Sie den Inhalt von Assemblies an

  • Geben Sie an der Eingabeaufforderung folgenden Befehl ein:

    ildasm <Assemblyname>

    In diesem Befehl bezeichnet Assemblyname den Namen der Assembly, die untersucht werden soll.

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

ildasm Hello.exe

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

Beispielprogramm "Hello, World"

Das folgende Beispiel zeigt ein einfaches "Hello, World"-Programm.

Imports System
Public Module modmain
   Sub Main()
      Console.WriteLine ("Hello World using Visual Basic!")
   End Sub
End Module 
[C#]
using System;
class MainApp {
     public static void Main() {
        Console.WriteLine("Hello World using C#!");    
    }
}
[C++]
#using <mscorlib.dll>
using namespace System;
void main() {
   Console::WriteLine(L"Hello World using Managed Extensions!");  
}

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:2411:0
}
.assembly Hello
{
  // --- The following custom attribute is added automatically; do not uncomment. -------
  //  .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
  //                                                                                bool) = ( 01 00 00 01 00 00 ) 
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module Hello.exe
// MVID: {58AD9DFD-63A6-462A-8AD5-42CBC95AA147}
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000001
// Image base: 0x03330000

Direktiven des Assemblymanifests

In der folgenden Tabelle werden alle Direktiven im Assemblymanifest des "Hello, World"-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> Gibt das Token des tatsächlichen Schlüssels der Assembly an, auf die verwiesen wird.
        .ver <Versionsnummer> Gibt die Versionsnummer der Assembly an, auf die verwiesen wird.
.assembly <Assemblyname> Gibt den Assemblynamen an.
        .hash algorithm <Int32-Wert> Gibt den verwendeten Hashalgorithmus an.
        .ver <Versionsnummer> Gibt die Versionsnummer der Assembly an.
.module <Dateiname> Gibt den Namen der Module an, aus denen die Assembly besteht. In diesem Beispiel besteht die Assembly aus nur einer Datei.
.subsystem <Wert> 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.

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.

Siehe auch

Erstellen von Assemblies | MSIL Disassembler-Tool (Ildasm.exe) | Programmieren mit Assemblies