Como: Exibir o conteúdo do Assembly

Você pode usar o Ildasm. exe (desmontador MSIL) para exibir informações Microsoft Intermediate Language (MSIL) em um arquivo. Se o arquivo que está sendo examinado for um assembly, essas informações podem incluir os atributos do assembly, bem como referências a outros módulos e assemblies. Essa informação pode ser útil em determinar se um arquivo é um assembly ou parte de um assembly, e se o arquivo possui referências a outros módulos ou assemblies.

Para exibir o conteúdo de um assembly usando Ildasm.exe

  • Digite ildasm <nome do assembly > no prompt de comando. Por exemplo, o comando a seguir desmonta o assembly Hello.exe.

    ildasm Hello.exe
    

Para exibir informações do manifesto do assembly

  • Clique duas vezes no ícone MANIFESTO na janela do MSIL Disassembler.

Exemplo

O exemplo a seguir inicia com um programa "Hello, World" básico. Após compilar o programa, use Ildasm.exe para desmontar o assembly Hello.exe e exibir o manifesto do assembly.

Imports System

Class MainApp
    Public Shared Sub Main()
        Console.WriteLine("Hello World using Visual Basic!")
    End Sub
End Class
using System;

class MainApp
{
    public static void Main()
    {
        Console.WriteLine("Hello World using C#!");
    }
}
using namespace System;

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

int main()
{
    MainApp::Main();
}

Executar o comando ildasm.exe no assembly Hello.exe e clicar duas vezes no ícone MANIFESTO na janela do IL DASM produz a saída a seguir:

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

A tabela a seguir descreve cada diretiva no manifesto do assembly do assembly Hello.exe usado no exemplo.

Diretiva

Descrição

.assembly extern <nome de assembly>

Especifica outro assembly que contém itens referenciados pelo módulo atual (no exemplo, mscorlib).

.PublicKeyToken <token>

Especifica o token da chave real do assembly referenciado.

. ver <o número de versão>

Especifica o número de versão do assembly referenciado.

.assembly <nome de assembly>

Especifica o nome do assembly.

o algoritmo de .hash <valor int32>

Especifica o algoritmo de hash usado.

. ver <o número de versão>

Especifica o número de versão do assembly.

.Module <nome de arquivo>

Especifica o nome dos módulos que compõem o assembly. Nesse exemplo, o assembly consiste de apenas um arquivo.

.Subsystem <valor>

Especifica o ambiente de aplicativo necessário para o programa. Nesse exemplo, o valor 3 indica que este executável é executado a partir de um console.

.corflags

Atualmente, um campo reservado nos metadados.

Um manifesto do assembly pode conter um número de diretivas diferentes, dependendo do conteúdo do assembly. Para obter uma lista abrangente das diretivas no manifesto do assembly, consulte a documentação do ECMA, especialmente "partição II: Definição de metadados e semântica" e "partição III: CIL instrução Set". A documentação está disponível on-line; consulte C# do ECMA e padrões comuns de infra-estrutura de linguagem no MSDN e padrão ECMA-335 - Common Language Infrastructure (CLI) no site Ecma International.

Consulte também

Referência

Ildasm. exe (desmontador MSIL)

Conceitos

Domínios de Aplicativos e Assemblies

Domínios de Aplicativo e Tópicos Como Fazer de Assembly