Compartir a través de


Cómo: Ver el contenido del ensamblado

Puede usar el Ildasm.exe (desensamblador de IL) para ver información de lenguaje intermedio común (CIL) en un archivo. Si el archivo que se examina es un ensamblado, esta información puede incluir los atributos y referencias del ensamblado a otros módulos y ensamblados. Esta información puede ser útil para determinar si un archivo es un ensamblado o parte de un ensamblado y si el archivo tiene referencias a otros módulos o ensamblados.

Para mostrar el contenido de un ensamblado mediante Ildasm.exe, escriba ildasm <nombre del ensamblado> en una línea de comandos. Por ejemplo, el comando siguiente desensambla el ensamblado Hello.exe .

ildasm Hello.exe

Para ver la información del manifiesto de ensamblado, haga doble clic en el icono Manifiesto de la ventana Desensamblador de IL.

Ejemplo

En el ejemplo siguiente se inicia con un programa básico "Hola mundo". Después de compilar el programa, use Ildasm.exe para desensamblar el ensamblado Hello.exe y ver el manifiesto del ensamblado.

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

Al ejecutar el comando ildasm.exe en el ensamblado deHello.exe y hacer doble clic en el icono Manifiesto de la ventana Desensamblador de IL, se genera la siguiente salida:

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

En la tabla siguiente se describe cada directiva del manifiesto de ensamblado del ensamblado Hello.exe usado en el ejemplo:

Directiva Descripción
.ensamblado externo <nombre de ensamblado> Especifica otro ensamblado que contiene elementos a los que hace referencia el módulo actual (en este ejemplo, mscorlib).
Token .publickeytoken <> Especifica el token de la clave real del ensamblado al que se hace referencia.
.ver <número de versión> Especifica el número de versión del ensamblado al que se hace referencia.
Nombre del ensamblado .assembly <> Especifica el nombre del ensamblado.
Algoritmo .hash <valor int32> Especifica el algoritmo hash usado.
.ver <número de versión> Especifica el número de versión del ensamblado.
Nombre del archivo .module <> Especifica el nombre de los módulos que componen el ensamblado. En este ejemplo, el ensamblado consta de solo un archivo.
Valor del subsistema <.> Especifica el entorno de aplicación necesario para el programa. En este ejemplo, el valor 3 indica que este ejecutable se ejecuta desde una consola.
.corflags Actualmente, un campo reservado en los metadatos.

Un manifiesto de ensamblado puede contener varias directivas diferentes, según el contenido del ensamblado. Para obtener una lista extensa de las directivas del manifiesto de ensamblado, consulte la documentación de Ecma, especialmente "Partition II: Metadata Definition and Semantics" (Partición II: Definición de metadatos y semántica) y "Partition III: CIL Instruction Set":

Consulte también