Procedura: visualizzare il contenuto dell'assembly
Aggiornamento: novembre 2007
È possibile utilizzare Disassembler MSIL (Ildasm.exe) per visualizzare informazioni sul linguaggio MILS (Microsoft Intermediate Language) in un file. Se il file esaminato è un assembly, è possibile che tali informazioni includano gli attributi dell'assembly, oltre a riferimenti ad altri moduli ed assembly. Queste informazioni possono risultare utili nel determinare se un file è un assembly o se fa parte di un assembly e se tale file contiene riferimenti ad altri moduli o assembly.
Per visualizzare il contenuto di un assembly mediante Ildasm.exe
Digitare ildasm <nome assembly> dal prompt dei comandi. Il comando riportato di seguito, ad esempio, esegue il disassemblaggio dell'assembly Hello.exe.
ildasm Hello.exe
Per visualizzare informazioni sul manifesto dell'assembly
- Fare doppio clic sull'icona del manifesto nella finestra di MSIL Disassembler.
Esempio
Nell'esempio riportato di seguito viene avviato un programma "Hello, World" di base. Dopo aver compilato il programma, utilizzare Ildasm.exe per disassemblare l'assembly Hello.exe e visualizzarne il manifesto.
Imports System
Public Module modmain
Sub Main()
Console.WriteLine ("Hello World using Visual Basic!")
End Sub
End Module
using System;
class MainApp {
public static void Main() {
Console.WriteLine("Hello World using C#!");
}
}
#using <mscorlib.dll>
using namespace System;
void main() {
Console::WriteLine(L"Hello World using Managed Extensions!");
}
Se si esegue il comando ildasm.exe nell'assembly Hello.exe e si fa doppio clic sull'icona del manifesto nella finestra IL DASM, verrà prodotto l'output seguente:
.assembly extern mscorlib
{
.publickeytoken = (B7 7A 5C 56 19 34 E0 89 ) // .z\V.4..
.ver 1:0:2411:0
}
.assembly Hello
{
// --- The following custom attribute is added automatically; do not uncomment. -------
// .custom instance void [mscorlib]System.Diagnostics.DebuggableAttribute::.ctor(bool,
// bool) = ( 01 00 00 01 00 00 )
.hash algorithm 0x00008004
.ver 0:0:0:0
}
.module Hello.exe
// MVID: {58AD9DFD-63A6-462A-8AD5-42CBC95AA147}
.subsystem 0x00000003
.file alignment 512
.corflags 0x00000001
// Image base: 0x03330000
Nella tabella riportata di seguito viene descritta ogni direttiva del manifesto dell'assembly relativo all'assembly Hello.exe utilizzato nell'esempio.
Direttiva |
Descrizione |
---|---|
.assembly extern <nome assembly> |
Consente di specificare un altro assembly contenente elementi a cui il modulo corrente fa riferimento (in questo esempio, mscorlib). |
.publickeytoken <token> |
Consente di specificare il token della chiave effettiva dell'assembly a cui si fa riferimento. |
.ver <numero versione> |
Consente di specificare il numero di versione dell'assembly a cui si fa riferimento. |
.assembly <nome assembly> |
Consente di specificare il nome dell'assembly. |
.hash algorithm <valore int32> |
Consente di specificare l'algoritmo hash utilizzato. |
.ver <numero versione> |
Consente di specificare il numero di versione dell'assembly. |
.module <nome file> |
Consente di specificare il nome dei moduli che costituiscono l'assembly. In questo esempio l'assembly è costituito da un unico file. |
.subsystem <value> |
Consente di specificare l'ambiente di applicazione necessario per il programma. In questo esempio il valore 3 indica che il file eseguibile viene eseguito da una console. |
.corflags |
Campo correntemente riservato nei metadati. |
In un manifesto dell'assembly possono essere contenute svariate direttive diverse, a seconda dei contenuti dell'assembly. Per un elenco completo delle direttive del manifesto dell'assembly, vedere la documentazione ECMA, in modo particolare "Partition II: Metadata Definition and Semantics" e "Partition III: CIL Instruction Set". Tale documentazione è disponibile in linea all'indirizzo https://msdn.microsoft.com/net/ecma/ e http://www.ecma-international.org/publications/standards/Ecma-335.htm (informazioni in lingua inglese).
Vedere anche
Concetti
Domini applicazione e assembly
Argomenti relativi alle procedure per domini applicazione e assembly