Procedimiento para ver el contenido de un ensamblado

Se puede usar Ildasm.exe (Desensamblador de IL) para ver la información del lenguaje intermedio común (CIL) de un archivo. Si el archivo que se examina es un ensamblado, esta información puede incluir los atributos del ensamblado y referencias a otros módulos y ensamblados. Esta información puede ser útil para determinar si un archivo es un ensamblado o forma parte de uno 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 un símbolo del sistema. Por ejemplo, el comando siguiente desensambla el ensamblado Hello.exe.

ildasm Hello.exe

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

Ejemplo

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 namespace System;

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

int main()
{
    MainApp::Main();
}
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 Hello.exe y hacer doble clic en el icono Manifiesto en la ventana del Desensamblador de IL, se produce lo siguiente:

// 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 explica cada directiva del manifiesto del ensamblado Hello.exe usado en el ejemplo:

Directiva Descripción
.assembly extern <nombre del ensamblado> Especifica otro ensamblado que contiene elementos a los que hace referencia el módulo actual (en este ejemplo, mscorlib).
.publickeytoken <token> 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.
.assembly <nombre del ensamblado> Especifica el nombre del ensamblado.
.hash algorithm <valor int32> Especifica el algoritmo hash usado.
.ver <número de versión> Especifica el número de versión del ensamblado.
.module <nombre del archivo> Especifica el nombre de los módulos que componen el ensamblado. En este ejemplo, el ensamblado consta de un único archivo.
.subsystem <value> 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 De momento, un campo reservado de los metadatos.

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

Vea también