Partager via


Avertissement du compilateur (niveau 1) CS1699

Mise à jour : novembre 2007

Message d'erreur

Utilisez l'option de ligne de commande 'option_compilateur' ou les paramètres de projet appropriés plutôt que 'nom_attribut'
Use command line option "compiler_option" or appropriate project settings instead of "attribute_name"

Pour signer un assembly, il est nécessaire de spécifier un fichier de clé. Avant Microsoft Visual C# 2005, vous avez spécifié le fichier de clé à l'aide d'attributs CLR dans le code source. Ces attributs sont maintenant désapprouvés.

En commençant dans Microsoft Visual C# 2005, vous devez utiliser la page Signature du Concepteur de projets ou de l'utilitaire Assembly Linker pour spécifier le fichier de clé.

La page Signature du Concepteur de projets est la méthode recommandée ; pour plus d'informations, consultez Page Signature, Concepteur de projets et Gestion d'assembly et signature de manifeste.

Comment : signer un assembly avec un nom fort utilise les options de compilateur suivantes :

Ces attributs ont été désapprouvés pour les raisons suivantes :

  • Il existait des problèmes de sécurité dus aux attributs incorporés dans les fichiers binaires produits par le compilateur. Toute personne disposant de votre fichier binaire avait également connaissance des clés stockées dans celui-ci.

  • Il existait des problèmes d'utilisation dus au fait que le chemin d'accès spécifié dans les attributs était relatif au répertoire de travail actif (qui était susceptible de changer dans l'environnement de développement intégré) ou au répertoire de sortie. Ainsi, la plupart du temps, le fichier de clé correspond probablement à ..\\..\\mykey.snk. Avec les attributs, il était aussi plus difficile pour le système de projet de signer correctement les assemblys satellites. Lorsque vous utilisez les options du compilateur au lieu de ces attributs, vous pouvez utiliser un chemin qualifié complet et un nom de fichier pour la clé sans que rien ne soit incorporé dans le fichier de sortie ; le système de projet et le système de contrôle de code source peuvent manipuler correctement ce chemin d'accès complet lorsque les projets sont déplacés ; le système de projet peut gérer un chemin d'accès relatif au projet pour le fichier de clé tout en passant un chemin d'accès complet au compilateur ; d'autres programmes de génération peuvent signer plus facilement les sorties en passant directement le chemin d'accès approprié au compilateur au lieu de générer un fichier source contenant les attributs corrects.

  • L'utilisation d'attributs avec les assemblys amis peut entraver l'efficacité du compilateur. Lorsque vous utilisez des attributs, le compilateur ne connaît pas la clé dont il s'agit lorsqu'il doit décider d'accorder ou non le caractère ami ; il doit donc deviner. À la fin de la compilation, le compilateur est capable de vérifier ce qu'il a deviné une fois qu'il connaît enfin la clé. Lorsque le fichier de clé est spécifié avec une option de compilateur, le compilateur peut décider immédiatement d'accorder ou non le caractère ami.

Exemple

L'exemple suivant génère l'erreur CS1699. Pour résoudre l'erreur, supprimez l'attribut et compilez avec /delaysign.

// CS1699.cs
// compile with: /target:library
[assembly:System.Reflection.AssemblyDelaySign(true)]   // CS1699

Voir aussi

Tâches

Comment : signer un assembly avec un nom fort

Référence

Page Signature, Concepteur de projets

Autres ressources

Gestion d'assembly et signature de manifeste