Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Você pode usar o Ildasm.exe (IL Disassembler) para exibir informações comuns de linguagem intermediária (CIL) em um arquivo. Se o arquivo que está sendo examinado for um assembly, essas informações incluem os atributos do assembly e as referências a outros módulos e assemblies. Essas informações podem ser úteis para determinar se um arquivo é uma montagem ou parte de uma montagem e se o arquivo tem referências a outros módulos ou montagens.
Para exibir o conteúdo de um assembly usando Ildasm.exe, insira o nome< do assembly ildasm > em um prompt de comando. Por exemplo, o comando a seguir descompila o assemblyHello.exe.
ildasm Hello.exe
Para exibir informações do manifesto do assembly, clique duas vezes no ícone Manifesto na janela IL Disassembler.
Exemplo
O exemplo a seguir começa com um programa básico "Olá, Mundo". Depois de compilar o programa, use Ildasm.exe para desmontar a instrução Hello.exe e exibir o manifesto da instrução.
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
Executando o comando ildasm.exe no assembly Hello.exe e clicando duas vezes no ícone Manifest na janela IL Disassembler produz a seguinte saída:
// 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 da montagem do Hello.exe usado no exemplo.
| Diretiva | Descrição |
|---|---|
| .assembly extern <nome do assembly> | Especifica outro assembly que contém itens referenciados pelo módulo atual (neste exemplo, mscorlib). |
| Token .publickeytoken <> | Especifica o token da chave efetiva da assembly referenciada. |
| .ver <número da versão> | Especifica o número de versão do assembly referenciado. |
| .assembly <nome do assembly> | Especifica o nome do assembly. |
| Algoritmo .hash valor< int32> | Especifica o algoritmo de hash usado. |
| .ver <número da versão> | Especifica o número de versão do assembly. |
| Nome do arquivo .module <> | Especifica o nome dos módulos que compõem a montagem. Neste exemplo, o assembly consiste em apenas um arquivo. |
| Valor do .subsystem <> | Especifica o ambiente do aplicativo necessário para o programa. Neste exemplo, o valor 3 indica que esse executável é executado a partir de um console. |
| .corflags | Atualmente, um campo reservado nos metadados. |
Um manifesto de conjunto pode conter várias diretivas diferentes, dependendo do conteúdo do conjunto. Para obter uma extensa lista das diretivas no manifesto do assembly, consulte a documentação do Ecma, especialmente "Partição II: Definição e Semântica de Metadados" e "Partição III: Conjunto de Instruções CIL":
- Padrões de C# ECMA e infraestrutura de linguagem comum
- Standard ECMA-335 – CLI (Common Language Infrastructure)