Comment : signer un assembly avec un nom fort
Mise à jour : novembre 2007
Le Kit de développement logiciel (SDK) Windows permet de signer un assembly avec un nom fort de plusieurs manières différentes :
à l'aide d'Assembly Linker (Al.exe) fourni par le Kit de développement logiciel (SDK) Windows ;
à l'aide d'attributs d'assembly pour insérer les informations de nom fort dans votre code. Vous pouvez utiliser soit l'AssemblyKeyFileAttribute soit l'AssemblyKeyNameAttribute, selon l'emplacement du fichier de clé à utiliser.
Remarque : Dans le .NET Framework version 2.0, certains compilateurs publient des messages d'avertissement lorsque des attributs sont utilisés.
à l'aide d'options du compilateur telles que /keyfile ou /delaysign en C# et Visual Basic, ou l'option d'éditeur de liens /KEYFILE ou /DELAYSIGN en C++. (Pour plus d'informations sur la signature différée, consultez Temporisation de signature d'un assembly.)
Remarque : |
---|
Dans Visual Studio 2005, l'environnement de développement propose des outils permettant de signer des assemblys. Consultez Gestion d'assembly et signature de manifeste et Page Signature, Concepteur de projets. |
Pour signer un assembly avec un nom fort, vous devez avoir une paire de clés de chiffrement. Pour plus d'informations sur la création d'une paire de clés, consultez Création d'une paire de clés publique/privée.
Pour créer et signer un assembly avec un nom fort à l'aide de l'utilitaire Assembly Linker
À l'invite de commande, tapez la commande suivante :
al/out:<nom de l'assembly> <nom du module>/keyfile:<nom du fichier>
Dans cette commande, nom de l'assembly représente le nom de l'assembly à signer avec un nom fort, nom du module représente le nom du module de code utilisé pour créer l'assembly et nom du fichier représente le nom du conteneur ou du fichier qui contient la paire de clés.
L'exemple suivant signe l'assembly MyAssembly.dll avec un nom fort à l'aide du fichier de clé sgKey.snk.
al /out:MyAssembly.dll MyModule.netmodule /keyfile:sgKey.snk
Pour signer un assembly avec un nom fort à l'aide d'attributs
- Dans un module de code, ajoutez AssemblyKeyFileAttribute ou AssemblyKeyNameAttribute, en spécifiant 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.
L'exemple de code suivant utilise AssemblyKeyFileAttribute avec un fichier de clé appelé sgKey.snk, situé dans le répertoire où l'assembly est compilé. Cela suppose que l'assembly est compilé à l'aide des compilateurs de ligne de commande vbc.exe et csc.exe.
<Assembly:AssemblyKeyFileAttribute("sgKey.snk")>
[assembly:AssemblyKeyFileAttribute(@"sgKey.snk")]
Remarque : |
---|
Dans des environnements de développement tels que Visual Studio, l'assembly peut ne pas être compilé dans le répertoire du projet. Par exemple, certaines versions de Visual Studio compilent les projets C# dans un sous-répertoire bin\Debug. Dans ce cas, le chemin d'accès dans l'exemple de code serait "..\\..\\sgKey.snk". Dans Visual Studio 2005, le fichier de clé pour C# peut être spécifié dans les paramètres du projet. |
Vous pouvez également temporiser la signature d'un assembly lors de la compilation. Pour plus d'informations, consultez Temporisation de signature d'un assembly.
Lorsque vous signez un assembly avec un nom fort, l'utilitaire Assembly Linker (Al.exe) recherche le fichier de clé relatif au répertoire en cours et au répertoire de sortie. Lorsque vous utilisez des compilateurs de ligne de commande, vous pouvez vous contenter de copier la clé dans le répertoire en cours contenant vos modules de code.
Voir aussi
Tâches
Comment : créer une paire de clés publique/privée
Concepts
Temporisation de signature d'un assembly
Référence
Page Signature, Concepteur de projets