Gewusst wie: Ansichtsassemblyinhalt

Aktualisiert: November 2007

Verwenden Sie MSIL Disassembler-Tool (Ildasm.exe), um MSIL-Informationen (Microsoft Intermediate Language) in einer Datei anzuzeigen. Wenn es sich bei der untersuchten Datei um eine Assembly handelt, können diese Informationen Assemblyattribute sowie Verweise auf andere Assemblys 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 Assemblys enthält.

So zeigen Sie den Inhalt einer Assembly mit Ildasm.exe an

  • Geben Sie ildasm <Assemblyname> an der Eingabeaufforderung ein. Zum Beispiel disassembliert der folgende Befehl die Hello.exe-Assembly.

    ildasm Hello.exe
    

So zeigen Sie Assemblymanifestinformationen an

  • Doppelklicken Sie auf das MANIFEST-Symbol im Fenster MSIL Disassembler.

Beispiel

Das folgende Beispiel beginnt mit einem einfachen "Hello, World"-Programm. Verwenden Sie nach dem Kompilieren des Programms Ildasm.exe, um die Hello.exe-Assembly zu disassemblieren und das Assemblymanifest anzuzeigen.

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

Wenn Sie den Befehl ildasm.exe für die Hello.exe-Assembly ausführen und auf das Symbol MANIFEST im Fenster IL DASM doppelklicken, wird die folgende Ausgabe erstellt:

.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

In der folgenden Tabelle werden alle Direktiven im Assemblymanifest der "Hello.exe"-Assembly beschrieben, die im Beispiel verwendet wird.

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 <value>

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 umfassende Liste der Direktiven im Assemblymanifest finden Sie in der ECMA-Dokumentation, insbesondere in "Partition II: Metadata Definition and Semantics" und "Partition III: CIL Instruction Set". Die Dokumentation ist online verfügbar unter https://msdn.microsoft.com/net/ecma/ und http://www.ecma-international.org/publications/standards/Ecma-335.htm.

Siehe auch

Konzepte

Anwendungsdomänen und Assemblys

Gewusst-wie-Themen zu Anwendungsdomänen und Assemblys

Referenz

MSIL Disassembler-Tool (Ildasm.exe)