Dela via


Anvisningar: Visa sammansättningsinnehåll

Du kan använda Ildasm.exe (IL Disassembler) för att visa gemensam information om mellanliggande språk (CIL) i en fil. Om filen som undersöks är en sammansättning kan den här informationen innehålla sammansättningens attribut och referenser till andra moduler och sammansättningar. Den här informationen kan vara användbar för att avgöra om en fil är en sammansättning eller en del av en sammansättning och om filen har referenser till andra moduler eller sammansättningar.

Om du vill visa innehållet i en assembly med Ildasm.exe, anger du ildasm <assembly name> i en kommandotolk. Följande kommando demonterar till exempel Hello.exe sammansättning.

ildasm Hello.exe

Om du vill visa information om sammansättningsmanifestet dubbelklickar du på manifestikonen i IL Disassembler-fönstret.

Exempel

Följande exempel börjar med ett grundläggande "Hello World"-program. När du har sammanställt programmet använder duIldasm.exe för att demontera Hello.exe-sammansättningen och visa sammansättningsmanifestet.

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

Om du kör kommandot ildasm.exeHello.exe sammansättning och dubbelklickar på manifestikonen i IL Disassembler-fönstret genereras följande utdata:

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

I följande tabell beskrivs varje direktiv i sammansättningsmanifestet för denHello.exe sammansättning som används i exemplet:

Direktiv Beskrivning
.assembly externt <sammansättningsnamn> Anger en annan sammansättning som innehåller objekt som refereras av den aktuella modulen (i det här exemplet mscorlib).
.publickeytoken-token <> Anger token för den faktiska nyckeln för den refererade sammansättningen.
.ver <versionsnummer> Anger versionsnumret för den refererade sammansättningen.
Sammansättningsnamn för .assembly <> Anger sammansättningsnamnet.
.hash-algoritm <int32-värde> Anger den hash-algoritm som används.
.ver <versionsnummer> Anger versionsnumret för sammansättningen.
.module-filnamn <> Anger namnet på de moduler som utgör sammansättningen. I det här exemplet består sammansättningen av endast en fil.
.subsystem <värde> Anger den programmiljö som krävs för programmet. I det här exemplet anger värdet 3 att den här körbara filen körs från en konsol.
.corflags För närvarande ett reserverat fält i metadata.

Ett sammansättningsmanifest kan innehålla ett antal olika direktiv, beroende på innehållet i sammansättningen. En omfattande lista över direktiven i sammansättningsmanifestet finns i Ecma-dokumentationen, särskilt "Partition II: Metadata Definition and Semantics" och "Partition III: CIL Instruction Set":

Se även