Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
| Eigentum | Wert |
|---|---|
| Regel-ID | CA2267 |
| Title | Anführungszeichen in dateibasierten Programmdirektive-Werten |
| Kategorie | Usage |
| Die Behebung ist eingreifend oder nicht eingreifend | Non-breaking |
| Standardmäßig in .NET 11 aktiviert | Als Warnung |
| Anwendbare Sprachen | C# |
Ursache
Der Wert einer dateibasierten Programmdirektive #: enthält Leerzeichen, die nicht in Anführungszeichen eingeschlossen sind.
Regelbeschreibung
Bevor die Zitate unterstützt wurden, wurden Leerzeichen in einem dateibasierten Programmdirektive-Wert #: wörtlich genommen. Dieses Formular funktioniert zwar noch, ist aber veraltet. Setzen Sie Werte, die Leerzeichen enthalten, in doppelte Anführungszeichen ("), damit sie eindeutig geparst werden.
Diese Regel gilt für die Direktiven #:sdk, #:property, #:project, #:package, #:ref, #:include und #:exclude. Es wird nur gemeldet, wenn der Wert ein eindeutiges, in Anführungszeichen gesetztes semantikerhaltendes Äquivalent hat, sodass die Anwendung der Korrektur niemals die Bedeutung der Direktive ändert.
Weitere Informationen zu dateibasierten Apps und deren Direktiven finden Sie unter dateibasierte Apps.
Wie man Verstöße behebt
Fügen Sie doppelte Anführungszeichen um den semantischen Wert hinzu, sodass Leerzeichen eindeutig analysiert werden. Bei zusammengesetzten Formen, z. B. einer Eigenschaftszuweisung oder einem Paketnamen mit Versionsangabe, setzen Sie den Teil nach dem Trennzeichen in Anführungszeichen. Behalten Sie absichtliche Leerzeichen um das Trennzeichen außerhalb der Anführungszeichen bei.
In Visual Studio können Sie auch die Codekorrektur Anführungszeichen um den Direktivenwert hinzufügen anwenden.
Example
Der folgende Codeausschnitt zeigt einen Verstoß gegen CA2267.
#:property Description=Hello World
Der folgende Codeausschnitt behebt den Verstoß.
#:property Description="Hello World"
Die Codekorrektur behält Leerzeichen um Trennzeichen und zwischen dem Direktiventyp und dem zugehörigen Wert bei. Zum Beispiel richten die folgenden Direktiven Namen und Trennzeichen aus:
#:property Prop = Value
#:package First @ 1.0
Die Codekorrektur fügt Anführungszeichen hinzu, ohne diese Ausrichtung zu ändern:
#:property Prop = "Value"
#:package First @ "1.0"
Wann sollten Warnungen unterdrückt werden?
Es wird nicht empfohlen, diese Warnung zu unterdrücken. Die Form in Anführungszeichen ist die unterstützte Methode, um Leerzeichen in einem Wert einer Direktive anzugeben, und die Form ohne Anführungszeichen ist veraltet.
Unterdrücken einer Warnung
Unterdrücken Sie bei dateibasierten Apps eine einzelne Verletzung, indem Sie der Einstiegspunktdatei eine #:property Direktive hinzufügen.
#:property NoWarn=$(NoWarn);CA2267
Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad auf none in der Konfigurationsdatei fest.
[*.cs]
dotnet_diagnostic.CA2267.severity = none
Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.