Visualizzazione dei contenuti dell'assembly
È possibile utilizzare MSIL Disassembler (Ildasm.exe) per visualizzare le informazioni del linguaggio intermedio Microsoft (MSIL, 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 i contenuti di un assembly
Al prompt dei comandi, digitare il comando seguente:
ildasm <nome assembly>
In questo comando, nome assembly rappresenta il nome dell'assembly da esaminare.
L'esempio seguente consente di aprire l'assembly Hello.exe
.
ildasm Hello.exe
Per visualizzare le informazioni del manifesto dell'assembly, fare doppio clic sull'icona del manifesto nella finestra di MSIL Disassembler.
Esempio "Hello, World"
Nell'esempio seguente viene visualizzato un programma "Hello, World" di base.
Imports System
Public Module modmain
Sub Main()
Console.WriteLine ("Hello World using Visual Basic!")
End Sub
End Module
[C#]
using System;
class MainApp {
public static void Main() {
Console.WriteLine("Hello World using C#!");
}
}
[C++]
#using <mscorlib.dll>
using namespace System;
void main() {
Console::WriteLine(L"Hello World using Managed Extensions!");
}
L'utilizzo di Ildasm.exe consente di visualizzare le seguenti informazioni nel manifesto dell'assembly:
.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
Direttive del manifesto dell'assembly
Nella tabella seguente viene descritta ogni direttiva del manifesto dell'assembly dell'esempio "Hello, World".
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 <valore> | 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 di ECMA relativa ai metadati situati nell'SDK di .NET Framework SDK nella directory Tool Developer's Guide.
Vedere anche
Creazione degli assembly | MSIL Disassembler (Ildasm.exe) | Programmazione con gli assembly