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