Freigeben über


Gewusst wie: Ansichtsassemblyinhalt

Verwenden Sie Ildasm.exe (MSIL Disassembler-Tool), 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

Class MainApp
    Public Shared Sub Main()
        Console.WriteLine("Hello World using Visual Basic!")
    End Sub
End Class
using System;

class MainApp
{
    public static void Main()
    {
        Console.WriteLine("Hello World using C#!");
    }
}
using namespace System;

class MainApp
{
public:
    static void Main()
    {
        Console::WriteLine("Hello World using C++/CLI!");
    }
};

int main()
{
    MainApp::Main();
}

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:

// Metadata version: v4.0.30319
.assembly extern mscorlib
{
  .publickeytoken = (B7 7A 5C 56 19 34 E0 89 )                         // .z\V.4..
  .ver 4:0:0:0
}
.assembly Hello
{
  .custom instance void [mscorlib]System.Runtime.CompilerServices.CompilationRelaxationsAttribute::.ctor(int32) = ( 01 00 08 00 00 00 00 00 ) 
  .custom instance void [mscorlib]System.Runtime.CompilerServices.RuntimeCompatibilityAttribute::.ctor() = ( 01 00 01 00 54 02 16 57 72 61 70 4E 6F 6E 45 78   // ....T..WrapNonEx
                                                                                                             63 65 70 74 69 6F 6E 54 68 72 6F 77 73 01 )       // ceptionThrows.
  .hash algorithm 0x00008004
  .ver 0:0:0:0
}
.module Hello.exe
// MVID: {7C2770DB-1594-438D-BAE5-98764C39CCCA}
.imagebase 0x00400000
.file alignment 0x00000200
.stackreserve 0x00100000
.subsystem 0x0003       // WINDOWS_CUI
.corflags 0x00000001    //  ILONLY
// Image base: 0x00600000

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 <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 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, siehe ECMA C# and Common Language Infrastructure Standards auf MSDN und Standard ECMA-335 - Common Language Infrastructure (CLI) auf der Ecma International-Website.

Siehe auch

Referenz

Ildasm.exe (MSIL Disassembler-Tool)

Konzepte

Anwendungsdomänen und Assemblys

Gewusst-wie-Themen zu Anwendungsdomänen und Assemblys