CA2210 : Les assemblys doivent porter des noms forts valides
TypeName |
AssembliesShouldHaveValidStrongNames |
CheckId |
CA2210 |
Catégorie |
Microsoft.CSharp |
Modification avec rupture |
Modification sans rupture |
Cause
Un assembly n'est pas signé avec un nom fort, le nom fort n'a pas pu être vérifié ou le nom fort ne serait pas valide sans les paramètres du Registre actuels de l'ordinateur.
Description de la règle
Cette règle récupère et vérifie le nom fort d'un assembly. Une violation se produit si chacune des conditions suivantes se vérifie :
L'assembly n'a pas de nom fort.
L'assembly a été modifié après signature.
La signature de l'assembly est différée.
L'assembly n'a pas été signé correctement ou la signature a échoué.
L'assembly requiert que les paramètres du Registre fassent l'objet d'une vérification. Par exemple, l'outil Strong Name Tool (Sn.exe) a été utilisé pour ignorer une vérification destinée à l'assembly.
Le nom fort protège les clients du chargement à leur insu d'un assembly falsifié. Les assemblys sans noms forts ne doivent pas être déployés hors de scénarios très limités. Si vous partagez ou distribuez des assemblys qui ne sont pas signés correctement, ceux-ci peuvent être falsifiés, le Common Language Runtime peut ne pas les charger ou l'utilisateur peut être amené à désactiver une vérification sur son ordinateur. Un assembly sans nom fort présente les inconvénients suivants :
Ses origines ne peuvent pas être vérifiées.
Le Common Language Runtime ne peut pas prévenir l'utilisateur si le contenu de l'assembly a été modifié.
Il ne peut pas être chargé dans le Global Assembly Cache.
Remarquez que pour charger et analyser un assembly dont la signature a été différée, vous devez désactiver sa vérification.
Comment corriger les violations
Pour créer un fichier de clé
Utilisez l'une des procédures suivantes :
Utilisez l'outil Assembly Linker (Al.exe) fourni par le kit de développement logiciel du .NET Framework.
Pour le .NET Framework v1.0 ou v1.1, utilisez l'attribut System.Reflection.AssemblyKeyFileAttribute ou System.Reflection.AssemblyKeyNameAttribute.
Pour le .NET Framework 2.0, utilisez l'option /keyfile ou /keycontainer du compilateur /KEYFILE (Spécifier une clé ou une paire de clés pour signer un assembly) ou /KEYCONTAINER (Spécifier un conteneur de clé pour signer un assembly) de l'éditeur de lien dans C++.
Pour signer votre assembly avec un nom fort dans Visual Studio
Dans Visual Studio, ouvrez votre solution.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis cliquez sur Propriétés.
Cliquez sur l'onglet Signature, puis activez la case à cocher Signer l'assembly.
Dans Choisir un fichier de clé de nom fort, sélectionnez Nouveau.
La fenêtre Créer une clé de nom fort s'affiche.
Dans Nom du fichier de clé, tapez le nom de votre clé de nom fort.
Choisissez s'il faut ou non protéger la clé avec un mot de passe, puis cliquez sur OK.
Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le projet, puis cliquez sur Générer.
Pour signer votre assembly avec un nom fort hors de Visual Studio
- Utilisez l'outil de nom fort (Sn.exe) fourni par le Kit de développement logiciel .NET Framework. Pour plus d'informations, consultez Sn.exe (outil Strong Name Tool).
Quand supprimer les avertissements
Ne supprimez un avertissement de cette règle que si l'assembly est utilisé dans un environnement où falsifier un contenu n'est pas un problème.
Voir aussi
Tâches
Comment : signer un assembly avec un nom fort
Référence
Sn.exe (outil Strong Name Tool)