Comment : signer un assembly avec un nom fortHow to: Sign an Assembly with a Strong Name

Il existe plusieurs façons de signer un assembly avec un nom fort :There are a number of ways to sign an assembly with a strong name:

  • À l'aide de l'onglet Signature dans la boîte de dialogue Propriétés d'un projet dans Visual Studio.By using the Signing tab in a project's Properties dialog box in Visual Studio. Il s'agit de la façon la plus facile et la plus pratique de signer un assembly avec un nom fort.This is the easiest and most convenient way to sign an assembly with a strong name.

  • À l’aide de l’utilitaire Assembly Linker (Al.exe) pour lier un module de code .NET Framework (un fichier .netmodule) à un fichier de clé.By using the Assembly Linker (Al.exe) to link a .NET Framework code module (a .netmodule file) with a key file.

  • À l'aide d'attributs d'assembly pour insérer les informations de nom fort dans votre code.By using assembly attributes to insert the strong name information into your code. Vous pouvez utiliser l'attribut AssemblyKeyFileAttribute ou AssemblyKeyNameAttribute , selon l'emplacement du fichier de clé à utiliser.You can use either the AssemblyKeyFileAttribute or the AssemblyKeyNameAttribute attribute, depending on where the key file to be used is located.

  • À l'aide des options du compilateur.By using compiler options.

Pour signer un assembly avec un nom fort, vous devez avoir une paire de clés de chiffrement.You must have a cryptographic key pair to sign an assembly with a strong name. Pour plus d’informations sur la création d’une paire de clés, consultez Comment : créer une paire de clés publique/privée.For more information about creating a key pair, see How to: Create a Public-Private Key Pair.

Pour créer et signer un assembly avec un nom fort à l'aide de Visual StudioTo create and sign an assembly with a strong name by using Visual Studio

  1. Dans l’ Explorateur de solutions, ouvrez le menu contextuel du projet et choisissez Propriétés.In Solution Explorer, open the shortcut menu for the project, and then choose Properties.

  2. Choisissez l'onglet Signature .Choose the Signing tab.

  3. Sélectionnez la zone Signer l'assembly .Select the Sign the assembly box.

  4. Dans la zone Choisir un fichier de clé de nom fort, choisissez <<Parcourir...>, puis recherchez le fichier de clé.In the Choose a strong name key file box, choose <Browse…>, and then navigate to the key file. Pour créer un fichier de clé, choisissez <<Nouveau...> et entrez son nom dans la boîte de dialogue Créer une clé de nom fort.To create a new key file, choose <New…> and enter its name in the Create Strong Name Key dialog box.

Pour créer et signer un assembly avec un nom fort à l'aide de l'utilitaire Assembly LinkerTo create and sign an assembly with a strong name by using the Assembly Linker

  • À l’invite de commandes Visual Studio, tapez la commande suivante :At the Visual Studio Command Prompt, type the following command:

    al /out:<assemblyName> <moduleName> /keyfile:<keyfileName>al /out:<assemblyName> <moduleName> /keyfile:<keyfileName>

    où :where:

    assemblyNameassemblyName
    Nom de l'assembly fortement signé (un fichier .dll ou .exe) que l'utilitaire Assembly Linker émettra.The name of the strongly signed assembly (a .dll or .exe file) that Assembly Linker will emit.

    moduleNamemoduleName
    Nom d’un module de code .NET Framework (un fichier .netmodule) qui inclut un ou plusieurs types.The name of a .NET Framework code module (a .netmodule file) that includes one or more types. Vous pouvez créer un fichier .netmodule en compilant votre code avec le commutateur /target:module en C# ou Visual Basic.You can create a .netmodule file by compiling your code with the /target:module switch in C# or Visual Basic.

    keyfileNamekeyfileName
    Nom du conteneur ou du fichier qui contient la paire de clés.The name of the container or file that contains the key pair. L'utilitaire Assembly Linker interprète un chemin d'accès relatif en relation avec le répertoire actif.Assembly Linker interprets a relative path in relationship to the current directory.

L'exemple suivant signe l'assembly MyAssembly.dll avec un nom fort à l'aide du fichier de clé sgKey.snk.The following example signs the assembly MyAssembly.dll with a strong name by using the key file sgKey.snk.

al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk  

Pour plus d'informations sur l'utilisation de cet outil, consultez Assembly Linker.For more information about this tool, see Assembly Linker.

Pour signer un assembly avec un nom fort à l'aide d'attributsTo sign an assembly with a strong name by using attributes

  1. Ajoutez l'attribut System.Reflection.AssemblyKeyFileAttribute ou AssemblyKeyNameAttribute à votre fichier de code source et spécifiez le nom du fichier ou du conteneur qui contient la paire de clés à utiliser lors de la signature de l'assembly avec un nom fort.Add the System.Reflection.AssemblyKeyFileAttribute or AssemblyKeyNameAttribute attribute to your source code file, and specify the name of the file or container that contains the key pair to use when signing the assembly with a strong name.

  2. Compilez le fichier de code source normalement.Compile the source code file normally.

Note

Les compilateurs C# et Visual Basic génèrent des avertissements (CS1699 et BC41008, respectivement) lorsqu'ils rencontrent l'attribut AssemblyKeyFileAttribute ou AssemblyKeyNameAttribute dans le code source.The C# and Visual Basic compilers issue compiler warnings (CS1699 and BC41008, respectively) when they encounter the AssemblyKeyFileAttribute or AssemblyKeyNameAttribute attribute in source code. Vous pouvez ignorer les avertissements.You can ignore the warnings.

L'exemple de code suivant utilise l'attribut AssemblyKeyFileAttribute avec un fichier de clé nommé keyfile.snk, situé dans le répertoire où l'assembly est compilé.The following example uses the AssemblyKeyFileAttribute attribute with a key file called keyfile.snk, which is located in the directory where the assembly is compiled.

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

Vous pouvez également différer la signature d'un assembly lors de la compilation de votre fichier source.You can also delay sign an assembly when compiling your source file. Pour plus d'informations, consultez Temporisation de signature d'un assembly.For more information, see Delay Signing an Assembly.

Pour signer un assembly avec un nom fort à l'aide du compilateurTo sign an assembly with a strong name by using the compiler

  • Compilez vos fichiers de code source avec l'option du compilateur /keyfile ou /delaysign en C# et Visual Basic, ou l'option de l'éditeur de liens /KEYFILE ou /DELAYSIGN en C++.Compile your source code file or files with the /keyfile or /delaysign compiler option in C# and Visual Basic, or the /KEYFILE or /DELAYSIGN linker option in C++. Après le nom de l'option, ajoutez une virgule et le nom du fichier de clé.After the option name, add a colon and the name of the key file. Lorsque vous utilisez des compilateurs de ligne de commande, vous pouvez copier le fichier de clé dans le répertoire qui contient vos fichiers de code source.When using command-line compilers, you can copy the key file to the directory that contains your source code files.

    Pour plus d’informations sur la signature différée, consultez Delay Signing an Assembly.For information on delay signing, see Delay Signing an Assembly.

    L'exemple suivant utilise le compilateur C# et signe l'assembly UtilityLibrary.dll avec un nom fort à l'aide du fichier de clé sgKey.snk.The following example uses the C# compiler and signs the assembly UtilityLibrary.dll with a strong name by using the key file sgKey.snk.

    csc /t:library UtilityLibrary.cs /keyfile:sgKey.snk  
    

Voir aussiSee Also

Création et utilisation d’assemblys avec nom fortCreating and Using Strong-Named Assemblies
Guide pratique pour créer une paire de clés publique/privéeHow to: Create a Public-Private Key Pair
Al.exe (Assembly Linker)Al.exe (Assembly Linker)
Temporisation de signature d'un assemblyDelay Signing an Assembly
Gestion d’assembly et signature de manifesteManaging Assembly and Manifest Signing
Page Signature, Concepteur de projetSigning Page, Project Designer