Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Sie können den Ildasm.exe (IL-Disassembler) verwenden, um CIL-Informationen in einer Datei anzuzeigen. Wenn es sich bei der zu untersuchenden Datei um eine Assembly handelt, können diese Informationen die Attribute und Verweise auf andere Module und Assemblys enthalten. Diese Informationen können hilfreich sein, um festzustellen, ob es sich bei einer Datei um eine Assembly oder einen Teil einer Assembly handelt und ob die Datei Verweise auf andere Module oder Assemblys hat.
Wenn Sie den Inhalt einer Assembly mit Ildasm.exeanzeigen möchten, geben Sie an einer Eingabeaufforderung ildasm-Assemblynamen <> ein. Mit dem folgenden Befehl wird beispielsweise die Hello.exe Assembly zerlegt.
ildasm Hello.exe
Um Assemblymanifestinformationen anzuzeigen, doppelklicken Sie im IL-Disassembler-Fenster auf das Manifestsymbol .
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 zerlegen und das Assemblymanifest anzuzeigen.
using System;
class MainApp
{
public static void Main()
{
Console.WriteLine("Hello World using C#!");
}
}
Class MainApp
Public Shared Sub Main()
Console.WriteLine("Hello World using Visual Basic!")
End Sub
End Class
Wenn Sie den Befehl ildasm.exe auf der Hello.exe-Assembly ausführen und auf das Manifestsymbol im IL-Disassembler-Fenster doppelklicken, wird die folgende Ausgabe erzeugt:
// 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 die einzelnen Direktiven im Assemblymanifest der im Beispiel verwendeten Hello.exe-Assembly beschrieben:
| Richtlinie | BESCHREIBUNG |
|---|---|
| assembly extern <Assemblyname> | Gibt eine weitere Assembly an, die Elemente enthält, auf die vom 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. |
| Assemblyname <> | Gibt den Assemblynamen an. |
| .Hash-Algorithmus <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. |
| Teilsystemwert <> | Gibt die anwendungsumgebung an, die für das Programm erforderlich ist. In diesem Beispiel gibt der Wert 3 an, dass diese ausführbare Datei über eine Konsole ausgeführt wird. |
| .corflags | Derzeit ein reserviertes Feld in den Metadaten. |
Ein Assemblierungsmanifest kann, abhängig vom Inhalt der Assemblierung, eine Reihe verschiedener Direktiven enthalten. Eine umfangreiche Liste der Direktiven im Assemblymanifest finden Sie in der Ecma-Dokumentation, insbesondere "Partition II: Metadata Definition and Semantics" und "Partition III: CIL Instruction Set":
- ECMA C#- und Common Language Infrastructure-Standards
- Standard ECMA-335 - Common Language Infrastructure (CLI)