Partager via


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

Référence

MSIL Disassembler (Ildasm.exe)