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:
KeyFile (C#-Compileroptionen) anstelle des AssemblyKeyFileAttribute-Attributs.
KeyContainer (C#-Compileroptionen) anstelle von AssemblyKeyNameAttribute.
DelaySign (C#-Compileroptionen) anstelle von AssemblyDelaySignAttribute.
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
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für