Compilerwarnung (Stufe 1) CS1699

Aktualisiert: November 2007

Fehlermeldung

Verwenden Sie die Befehlszeilenoption "compiler_option" oder entsprechende Projekteinstellungen anstelle von "attribute_name"
Use command line option "compiler_option" or appropriate project settings instead of "attribute_name"

Zum Signieren einer Assembly muss eine Schlüsseldatei angegeben werden. Vor Microsoft Visual C# 2005 haben Sie die Schlüsseldatei mit CLR-Attributen im Quellcode angegeben. Diese Attribute sind jetzt veraltet.

Ab Microsoft Visual C# 2005 sollten Sie zum Angeben der Schlüsseldatei die Signierungsseite des Projekt-Designers oder den Assemblylinker verwenden.

Das Verwenden der Signierungsseite des Projekt-Designers stellt die bevorzugte Methode dar. Weitere Informationen finden Sie unter Seite "Signierung", Projekt-Designer und Verwalten der Signierung von Assemblys und Manifesten.

Bei Gewusst wie: Signieren einer Assembly mit einem starken Namen werden die folgenden Compileroptionen verwendet:

Diese Attribute sind aus folgenden Gründen veraltet:

  • Es sind Sicherheitsprobleme aufgrund der Attribute aufgetreten, die in den vom Compiler erstellten Binärdateien eingebettet waren. Alle Benutzer, die die Binärdatei besaßen, hatten auch die darin gespeicherten Schlüssel zur Verfügung.

  • Es gab Verwendbarkeitsprobleme, weil der in den Attributen angegebene Pfad zum aktuellen Arbeitsverzeichnis, das in der integrierten Entwicklungsumgebung (IDE) geändert werden konnte, oder zum Ausgabeverzeichnis relativ war. Deshalb ist der Schlüssel meistens ..\\..\\mykey.snk. Attribute erschweren dem Projektsystem das richtige Signieren von Satellitenassemblys. Wenn Sie anstelle dieser Attribute die Compileroptionen verwenden, können Sie einen vollqualifizierten Pfad- und Dateinamen für den Schlüssel verwenden, ohne dass etwas in der Ausgabedatei eingebettet wird. Das Projektsystem und das Quellcodeverwaltungssystem können den vollständigen Pfad beim Verschieben von Projekten ordnungsgemäß ändern. Das Projektsystem kann einen projektbezogenen Pfad zur Schlüsseldatei verwalten und trotzdem einen vollständigen Pfad an den Compiler übergeben. Andere Buildprogramme können auf einfachere Weise Ausgaben signieren, indem sie den korrekten Pfad direkt an den Compiler übergeben, statt eine Quelldatei mit den korrekten Attributen zu generieren.

  • Die Verwendung von Attributen mit friend-Assemblys kann die Compilereffizienz beeinträchtigen. Wenn Sie Attribute verwenden, ist dem Compiler nicht bekannt, welches der Schlüssel ist und wann er zu entscheiden hat, ob Friendship gewährt werden soll. So muss der Compiler eine beliebige Entscheidung treffen. Am Ende der Kompilierung, wenn dem Compiler schließlich der Schlüssel bekannt ist, kann er überprüfen, ob die richtige Entscheidung getroffen wurde. Wenn die Schlüsseldatei mit einer Compileroption angegeben wird, kann der Compiler sofort entscheiden, ob Friendship gewährt werden soll.

Beispiel

Im folgenden Beispiel wird CS1699 generiert. Entfernen Sie zum Beheben des Fehlers das Attribut, und kompilieren Sie mit /delaysign.

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

Siehe auch

Aufgaben

Gewusst wie: Signieren einer Assembly mit einem starken Namen

Referenz

Seite "Signierung", Projekt-Designer

Weitere Ressourcen

Verwalten der Signierung von Assemblys und Manifesten