Comment : afficher le contenu d'un assembly
Mise à jour : novembre 2007
Vous pouvez utiliser MSIL Disassembler (Ildasm.exe) pour visualiser les informations de langage MSIL (Microsoft Intermediate Language) dans un fichier. Si le fichier examiné est un assembly, ces informations peuvent inclure les attributs de l'assembly, ainsi que des références à d'autres modules et assemblys. Ces informations peuvent être utiles pour déterminer si un fichier est un assembly ou fait partie d'un assembly et s'il a des références à d'autres modules ou assemblys.
Pour afficher le contenu d'un assembly à l'aide d'Ildasm.exe
Tapez ildasm <nom de l'assembly> à l'invite de commandes. Par exemple, la commande suivante désassemble l'assembly Hello.exe.
ildasm Hello.exe
Pour visualiser les informations du manifeste d'assembly
- Double-cliquez sur l'icône du manifeste dans la fenêtre du désassembleur MSIL Disassembler.
Exemple
L'exemple suivant débute avec un programme de base « Hello, World ». Après avoir compilé le programme, utilisez Ildasm.exe pour désassembler l'assembly Hello.exe et consulter le manifeste d'assembly.
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!");
}
L'exécution de la commande ildasm.exe sur l'assembly Hello.exe et le double-clic sur l'icône du manifeste dans la fenêtre IL DASM produisent la sortie suivante :
.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
Le tableau suivant décrit chaque directive du manifeste d'assembly Hello. exe utilisé dans l'exemple.
Directive |
Description |
---|---|
.assembly extern <nom de l'assembly> |
Spécifie un autre assembly contenant des éléments référencés par le module en cours (dans cet exemple, mscorlib). |
.publickeytoken <token> |
Spécifie le jeton de la clé réelle de l'assembly référencé. |
.ver <numéro de version> |
Spécifie le numéro de version de l'assembly référencé. |
.assembly <nom de l'assembly> |
Spécifie le nom d'assembly. |
.hash algorithm <valeur int32> |
Spécifie l'algorithme de hachage utilisé. |
.ver <numéro de version> |
Spécifie le numéro de version de l'assembly. |
.module <nom du fichier> |
Spécifie le nom des modules composant l'assembly. Dans cet exemple, l'assembly n'est constitué que d'un seul fichier. |
.subsystem <valeur> |
Spécifie l'environnement d'application requis pour le programme. Dans cet exemple, la valeur 3 indique que cet exécutable est exécuté à partir d'une console. |
.corflags |
Actuellement, un champ réservé dans les métadonnées. |
Un manifeste d'assembly peut contenir plusieurs directives différentes, en fonction du contenu de l'assembly. Pour obtenir une liste complète des directives dans le manifeste d'assembly, consultez la documentation ECMA, en particulier « Partition II: Metadata Definition and Semantics » et « Partition III: CIL Instruction Set ». La documentation est disponible en ligne à l'adresse https://msdn.microsoft.com/net/ecma/ et http://www.ecma-international.org/publications/standards/Ecma-335.htm.
Voir aussi
Concepts
Domaines d'application et assemblys
Rubriques Comment relatives aux domaines d'application et aux assemblys