Comment : afficher le contenu d’un assemblyHow to: View assembly contents

Vous pouvez utiliser Ildasm.exe (IL Disassembler) pour visualiser les informations de langage MSIL (Microsoft Intermediate Language) dans un fichier.You can use the Ildasm.exe (IL Disassembler) to view Microsoft intermediate language (MSIL) information in a file. Si le fichier examiné est un assembly, ces informations peuvent inclure les attributs et les références de l’assembly à d’autres modules et assemblys.If the file being examined is an assembly, this information can include the assembly's attributes and references to other modules and assemblies. 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.This information can be helpful in determining whether a file is an assembly or part of an assembly and whether the file has references to other modules or assemblies.

Pour afficher le contenu d’un assembly à l’aide de Ildasm.exe , entrez Ildasm <assembly name> à l’invite de commandes.To display the contents of an assembly using Ildasm.exe , enter ildasm <assembly name> at a command prompt. Par exemple, la commande suivante désassemble l’assembly Hello.exe .For example, the following command disassembles the Hello.exe assembly.

ildasm Hello.exe

Pour afficher les informations de manifeste d’assembly, double-cliquez sur l’icône de manifeste dans la fenêtre du désassembleur MSIL.To view assembly manifest information, double-click the Manifest icon in the MSIL Disassembler window.

ExempleExample

L’exemple suivant démarre avec un programme « Hello World » de base.The following example starts with a basic "Hello World" program. Après avoir compilé le programme, utilisez Ildasm.exe pour désassembler l’assembly Hello.exe et afficher le manifeste de l’assembly.After compiling the program, use Ildasm.exe to disassemble the Hello.exe assembly and view the assembly manifest.

using namespace System;

class MainApp
{
public:
    static void Main()
    {
        Console::WriteLine("Hello World using C++/CLI!");
    }
};

int main()
{
    MainApp::Main();
}
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 ildasm.exe de commande sur l’assembly Hello.exe et le double-clic sur l’icône du manifeste dans la fenêtre du désassembleur MSIL génère la sortie suivante :Running the command ildasm.exe on the Hello.exe assembly and double-clicking the Manifest icon in the MSIL Disassembler window produces the following output:

// 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 de l’assembly de l’assembly Hello.exe utilisé dans l’exemple :The following table describes each directive in the assembly manifest of the Hello.exe assembly used in the example:

DirectiveDirective DescriptionDescription
. assembly extern <assembly name>.assembly extern <assembly name> Spécifie un autre assembly qui contient des éléments référencés par le module actuel (dans cet exemple, mscorlib).Specifies another assembly that contains items referenced by the current module (in this example, mscorlib).
. PublicKeyToken <token>.publickeytoken <token> Spécifie le jeton de la clé réelle de l’assembly référencé.Specifies the token of the actual key of the referenced assembly.
. ver <version number>.ver <version number> Spécifie le numéro de version de l’assembly référencé.Specifies the version number of the referenced assembly.
. assembly <assembly name>.assembly <assembly name> Spécifie le nom de l’assembly.Specifies the assembly name.
. algorithme de hachage <int32 value>.hash algorithm <int32 value> Spécifie l’algorithme de hachage utilisé.Specifies the hash algorithm used.
. ver <version number>.ver <version number> Spécifie le numéro de version de l’assembly.Specifies the version number of the assembly.
. module <file name>.module <file name> Spécifie le nom des modules qui composent l’assembly.Specifies the name of the modules that make up the assembly. Dans cet exemple, l’assembly se compose d’un seul fichier.In this example, the assembly consists of only one file.
. sous-système <value>.subsystem <value> Spécifie l’environnement d’application nécessaire pour le programme.Specifies the application environment required for the program. Dans cet exemple, la valeur 3 indique que cet exécutable est exécuté à partir d’une console.In this example, the value 3 indicates that this executable is run from a console.
.corflags.corflags Actuellement un champ réservé dans les métadonnées.Currently a reserved field in the metadata.

Un manifeste d’assembly peut contenir plusieurs directives différentes, en fonction du contenu de l’assembly.An assembly manifest can contain a number of different directives, depending on the contents of the assembly. Pour obtenir une liste complète des directives du manifeste de l’assembly, consultez la documentation ECMA, en particulier « Partition II : Metadata Definition and Semantics » et « Partition III : CIL Instruction Set » :For an extensive list of the directives in the assembly manifest, see the Ecma documentation, especially "Partition II: Metadata Definition and Semantics" and "Partition III: CIL Instruction Set":

Voir aussiSee also