Compilerwarnung (Stufe 1) CS1699

Verwenden Sie die Befehlszeilenoption „compiler_option“ oder geeignete Projekteinstellungen anstelle von „attribute_name“.

Um eine Assembly zu signieren, ist es erforderlich, eine Schlüsseldatei anzugeben. Vor C# 2.0 haben Sie die Schlüsseldatei mit CLR-Attributen im Quellcode angegeben. Diese Attribute sind jetzt veraltet.

Ab C# 2.0 sollten Sie die Signierungsseite des Projekt-Designers oder den Assembly-Linker verwenden, um die Schlüsseldatei anzugeben.

Die Signierungsseite des Projekt-Designers ist die bevorzugte Methode. Weitere Informationen finden Sie unter Seite „Signierung“, Projekt-Designer und Verwalten der Signierung von Assemblys und Manifesten.

Bei Vorgehensweise: 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 die vom Compiler erzeugten Binärdateien eingebettet wurden. Jeder, der die Binärdatei besaß, verfügte auch über die darin gespeicherten Schlüssel.

  • Es gab Probleme hinsichtlich der Verwendbarkeit, da der in den Attributen angegebene Pfad relativ zum aktuellen Arbeitsverzeichnis war, was die Integrierte Entwicklungsumgebung (Integrated Development Environment, IDE) oder das Ausgabeverzeichnis verändern konnte. Daher ist die Schlüsseldatei in den meisten Fällen wahrscheinlich ..\\..\\mykey.snk. Attribute erschweren es auch dem Projektsystem, Satellitenassemblys richtig zu signieren. 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 die Ausgabedatei eingebettet wird. Das Projektsystem und das Quellcodeverwaltungssystem können diesen vollständigen Pfad ordnungsgemäß bearbeiten, wenn Projekte verschoben werden. Das Projektsystem kann einen projektspezifischen Pfad zur Schlüsseldatei verwalten und trotzdem einen vollständigen Pfad an den Compiler übergeben. Andere Buildprogramme können Ausgaben leichter signieren, indem sie den richtigen Pfad direkt an den Compiler übergeben, anstatt eine Quelldatei mit den richtigen Attributen zu generieren.

  • Das Verwenden von Attributen mit Friend-Assemblys kann die Effizienz des Compilers beeinträchtigen. Wenn Sie Attribute verwenden, ist dem Compiler der Schlüssel bei der Entscheidung, ob er Freundschaft gewährt, nicht bekannt, und er muss schätzen. Am Ende der Kompilierung kann der Compiler die Schätzung überprüfen, sobald ihm der Schlüssel schließlich bekannt ist. Wenn die Schlüsseldatei mit einer Compileroption angegeben wird, kann der Compiler sofort entscheiden, ob er Freundschaft gewährt.

Beispiel

Im folgenden Beispiel wird CS1699 generiert. Um den Fehler zu beheben, entfernen Sie das Attribut und kompilieren Sie mit /delaysign.

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

Weitere Informationen