Compilerwarnung (Stufe 1) CS1699Compiler Warning (level 1) CS1699

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

Um eine Assembly zu signieren, ist es erforderlich, eine Schlüsseldatei anzugeben.In order to sign an assembly, it is necessary to specify a key file. Vor Microsoft Visual C# 2005Microsoft Visual C# 2005 haben Sie die Schlüsseldatei mit CLR-Attributen im Quellcode angegeben.Prior to Microsoft Visual C# 2005Microsoft Visual C# 2005, you specified the key file using CLR attributes in source code. Diese Attribute sind jetzt veraltet.These attributes are now deprecated.

Ab Microsoft Visual C# 2005Microsoft Visual C# 2005 sollten Sie die Signierungsseite des Projekt-Designers oder den Assembly-Linker verwenden, um die Schlüsseldatei anzugeben.Beginning in Microsoft Visual C# 2005Microsoft Visual C# 2005, you should use the Signing Page of the Project Designer or the Assembly Linker to specify the key file.

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.The Signing Page of the Project Designer is the preferred method; for more information, see Signing Page, Project Designer and Managing Assembly and Manifest Signing.

Bei Vorgehensweise: Signieren einer Assembly mit einem starken Namen werden die folgenden Compileroptionen verwendet:The How to: Sign an Assembly with a Strong Name uses the following compiler options:

Diese Attribute sind aus folgenden Gründen veraltet:These attributes have been deprecated for the following reasons:

  • Es sind Sicherheitsprobleme aufgrund der Attribute aufgetreten, die in die vom Compiler erzeugten Binärdateien eingebettet wurden.There were security issues due to the attributes being embedded in the binary files produced by the compiler. Jeder, der die Binärdatei besaß, verfügte auch über die darin gespeicherten Schlüssel.Everyone who had your binary also had the keys stored in it.

  • 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.There were usability issues due to the fact that the path specified in the attributes was relative to the current working directory, which could change in the integrated development environment (IDE), or to the output directory. Daher ist die Schlüsseldatei in den meisten Fällen wahrscheinlich ..\\..\\mykey.snk.Thus, most times the key file is likely to be ..\\..\\mykey.snk. Attribute erschweren es auch dem Projektsystem, Satellitenassemblys richtig zu signieren.Attributes also make it more difficult for the project system to properly sign satellite assemblies. 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.When you use the compiler options instead of these attributes, you can use a fully qualified path and file name for the key without anything being embedded in the output file; the project system and source code control system can properly manipulate that full path when projects are moved around; the project system can maintain a project-relative path to the key file, and still pass a full path to the compiler; other build programs can more easily sign outputs by passing the proper path directly to the compiler instead of generating a source file with the correct attributes.

  • Das Verwenden von Attributen mit Friend-Assemblys kann die Effizienz des Compilers beeinträchtigen.Using attributes with friend assemblies can hamper compiler efficiency. 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.When you use attributes, the compiler does not know what the key is when it has to decide whether or not to grant friendship and so it has to guess. Am Ende der Kompilierung kann der Compiler die Schätzung überprüfen, sobald ihm der Schlüssel schließlich bekannt ist.At the end of compilation, the compiler is able to verify the guess once it finally knows the key. Wenn die Schlüsseldatei mit einer Compileroption angegeben wird, kann der Compiler sofort entscheiden, ob er Freundschaft gewährt.When the key file is specified with a compiler option, the compiler can immediately decide whether to grant friendship.

BeispielExample

Im folgenden Beispiel wird CS1699 generiert.The following sample generates CS1699. Um den Fehler zu beheben, entfernen Sie das Attribut und kompilieren Sie mit /delaysign.To resolve the error, remove the attribute and compile with /delaysign.

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

Siehe auchSee Also

Seite „Signierung“, Projekt-DesignerSigning Page, Project Designer
Verwalten der Signierung von Assemblys und ManifestenManaging Assembly and Manifest Signing
Vorgehensweise: Signieren einer Assembly mit einem starken NamenHow to: Sign an Assembly with a Strong Name