Notes
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Vous pouvez utiliser le Ildasm.exe (désassembleur IL) pour afficher les informations CIL (Common Intermediate Language) dans un fichier. Si le fichier examiné est un assembly, ces informations peuvent inclure les attributs et références de l’assembly à d’autres modules et assemblys. Ces informations peuvent être utiles pour déterminer si un fichier est un assembly ou une partie d’un assembly et si le fichier a des références à d’autres modules ou assemblys.
Pour afficher le contenu d’un assembly à l’aide de Ildasm.exe, entrez le nom< de l’assembly ildasm > à l’invite de commandes. Par exemple, la commande suivante désassemble l’assemblyHello.exe .
ildasm Hello.exe
Pour afficher les informations du manifeste d’assembly, double-cliquez sur l’icône Manifeste dans la fenêtre Désassembleur IL.
Exemple :
L’exemple suivant commence par un programme « Hello World » de base. Après avoir compilé le programme, utilisez Ildasm.exe pour désassembler l’assembly Hello.exe et afficher le manifeste d’assembly.
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
L’exécution de la commande ildasm.exe sur l’assembly Hello.exe et le double-clic sur l’icône Manifeste dans la fenêtre Désassembleur IL génère la sortie suivante :
// 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
Le tableau suivant décrit chaque directive dans le manifeste d’assembly de l’assembly Hello.exe utilisé dans l’exemple :
Instructions | Descriptif |
---|---|
Nom de l’assembly .assembly extern <> | Spécifie un autre assembly qui contient des éléments référencés par le module actuel (dans cet exemple). mscorlib |
Jeton .publickeytoken <> | Spécifie le jeton de la clé réelle de l’assembly référencé. |
Numéro de version .ver <> | Spécifie le numéro de version de l’assembly référencé. |
Nom de l’assembly .assembly <> | Spécifie le nom de l’assembly. |
Valeur int32 de l’algorithme <de hachage .hash> | Spécifie l’algorithme de hachage utilisé. |
Numéro de version .ver <> | Spécifie le numéro de version de l’assembly. |
Nom du fichier .module <> | Spécifie le nom des modules qui composent l’assembly. Dans cet exemple, l’assembly se compose d’un seul fichier. |
Valeur du .sous-système <> | 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 du manifeste d’assembly, consultez la documentation Ecma, en particulier « Partition II : Définition et sémantique des métadonnées » et « Jeu d’instructions CIL : Partition III :
- Normes ECMA C# et Common Language Infrastructure
- ECMA-335 standard - Common Language Infrastructure (CLI)