CA2267: кавычки пробелов в значениях директив программы на основе файлов

Недвижимость Ценность
Идентификатор правила CA2267
Заголовок Пробелы в кавычках в значениях директив программы на основе файлов
Категория Использование
Исправление является разрушающим или неразрушающим неразрывный
Включен по умолчанию в .NET 11 Как предупреждение
Применимые языки C#

Причина

Значение директивы программы #: на основе файлов содержит незаключенные пробелы.

Описание правила

До поддержки кавыка пробелы в значении директивы программы #: на основе файлов принимаются буквально. Эта форма по-прежнему работает, но не рекомендуется. Заключайте значения, содержащие пробелы, в двойные кавычки ("), чтобы они разбирались однозначно.

Это правило применяется к директивам #:sdk, #:ref, #:exclude, #:property, #:package, #:project и #:include. Об этом сообщается только тогда, когда значение имеет однозначный эквивалент в кавычках, сохраняющий семантику, поэтому применение исправления никогда не меняет смысл директивы.

Дополнительные сведения о приложениях на основе файлов и их директивах см. в разделе "Приложения на основе файлов".

Устранение нарушений

Добавьте двойные кавычки вокруг семантического значения, поэтому пробелы анализируются однозначно. Для составных форм, таких как присваивание свойства или имя пакета и его версия, заключайте в кавычки часть, следующую за разделителем. Сохраняйте все намеренно добавленные пробелы вокруг разделителя вне кавычек.

В Visual Studio также можно применить исправление кода «Добавить кавычки вокруг значения директивы».

Example

В следующем фрагменте кода показано нарушение CA2267.

#:property Description=Hello World

В следующем фрагменте кода исправлено нарушение.

#:property Description="Hello World"

Исправление кода сохраняет пробелы вокруг разделителей и между типом директивы и его значением. Например, следующие директивы выравнивают имена и разделители:

#:property Prop  = Value
#:package  First @ 1.0

Исправление кода добавляет кавычки без изменения этого выравнивания:

#:property Prop  = "Value"
#:package  First @ "1.0"

Когда следует подавлять предупреждения

Не рекомендуется подавлять это предупреждение. Форма в кавычках — это поддерживаемый способ указания пробелов в значении директивы, а форма без кавычек считается устаревшей.

Отключение предупреждений

Для приложений на основе файловой системы можно подавить отдельное нарушение, добавив директиву #:property в файл с точкой входа.

#:property NoWarn=$(NoWarn);CA2267

Чтобы отключить правило для файла, папки или проекта, задайте его серьезность none в файле конфигурации.

[*.cs]
dotnet_diagnostic.CA2267.severity = none

Дополнительные сведения см. в разделе "Подавление предупреждений анализа кода".

См. также