Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
| Majątek | Value |
|---|---|
| Identyfikator reguły | CA2267 |
| Title | Ujmij w cudzysłów wartości zawierające białe znaki w dyrektywach programu opartych na plikach |
| Kategoria | Użycie |
| Poprawka jest przełomowa lub nieprzełomowa | Non-breaking |
| Domyślnie włączone w .NET 11 | Jako ostrzeżenie |
| Zastosowane języki | C# |
Przyczyna
Wartość dyrektywy programu opartej na pliku #: zawiera białe znaki nieujęte w cudzysłów.
Opis reguły
Zanim obsługiwano ujęcie w cudzysłów, białe znaki w wartości dyrektywy #: w programie opartym na plikach były interpretowane dosłownie. Ta forma nadal działa, ale jest przestarzała. Ujmuj wartości zawierające białe znaki w podwójny cudzysłów ("), aby były interpretowane jednoznacznie.
Ta reguła ma zastosowanie do dyrektyw #:sdk, #:property, #:package, #:ref, #:project, #:include i #:exclude. Jest raportowane tylko wtedy, gdy wartość ma jednoznaczny odpowiednik ujęty w cudzysłów, który zachowuje semantykę, dzięki czemu zastosowanie poprawki nigdy nie zmienia znaczenia dyrektywy.
Aby uzyskać więcej informacji na temat aplikacji opartych na plikach i ich dyrektyw, zobacz Aplikacje oparte na plikach.
Jak naprawić naruszenia
Dodaj podwójne cudzysłowy wokół wartości semantycznej, aby białe znaki były interpretowane jednoznacznie. W przypadku form złożonych, takich jak przypisanie właściwości lub nazwa pakietu oraz wersja, ujmij w cudzysłów część po separatorze. Zachowaj wszelkie zamierzone odstępy wokół separatora poza cudzysłowami.
W programie Visual Studio można również zastosować poprawkę kodu Dodaj cudzysłowy wokół wartości dyrektywy.
Example
Poniższy fragment kodu pokazuje naruszenie CA2267.
#:property Description=Hello World
Poniższy fragment kodu naprawia naruszenie.
#:property Description="Hello World"
Poprawka w kodzie zachowuje odstępy wokół separatorów oraz między typem dyrektywy a jej wartością. Na przykład poniższe dyrektywy wyrównują nazwy i separatory:
#:property Prop = Value
#:package First @ 1.0
Poprawka kodu dodaje cudzysłowy bez zmiany tego wyrównania:
#:property Prop = "Value"
#:package First @ "1.0"
Kiedy pomijać ostrzeżenia
Nie zaleca się pomijania tego ostrzeżenia. Forma ujęta w cudzysłów jest obsługiwanym sposobem umieszczania białych znaków w wartości dyrektywy, a forma bez cudzysłowu jest wycofywana z użycia.
Pomijanie ostrzeżenia
W przypadku aplikacji opartych na plikach wyłącz pojedyncze naruszenie, dodając dyrektywę #:property do pliku punktu wejścia.
#:property NoWarn=$(NoWarn);CA2267
Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.
[*.cs]
dotnet_diagnostic.CA2267.severity = none
Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.