Подавить предупреждение для всех проектов в Visual Studio

Я видел ответы, показывающие, как подавить предупреждение для определенной строки кода или для определенного проекта. Я не хочу этого.

Я хочу отключить конкретное предупреждение для всех моих проектов.

(Если это имеет значение, предупреждение — IDE0044. И я использую C#.)


person ispiro    schedule 17.05.2018    source источник
comment
Вы можете создать исходный файл в каталоге решения с атрибутом [SuppressMessage] в нем. Затем включите его в каждый проект с помощью Добавить существующий файл... Добавить как ссылку.   -  person Ron Beyer    schedule 17.05.2018
comment
@RonBeyer Это не совсем то, что я ищу, но спасибо за обходной путь.   -  person ispiro    schedule 17.05.2018


Ответы (6)


В недавнем обновлении Visual Studio 2017 (15.7.1) теперь есть такая возможность. В меню Tools->Options выберите вкладку TextEditor->C#->Code Style->General. Под Field preferences есть опция Prefer readonly. Установите это на No.

Изображение настроек текстового редактора.

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

 dotnet_style_readonly_field = false:none
person John Koerner    schedule 17.05.2018

Вы можете использовать атрибут SuppressMessage, присутствующий в пространстве имен System.Diagnostics.CodeAnalysis, например

[SuppressMessage("Microsoft.Usage", "CA1801:ReviewUnusedParameters", MessageId = "args")]

Что ж, как вы отредактировали, сказав Я хочу подавить конкретное предупреждение для всех моих проектов

Вы не можете сделать это для всего проекта, насколько мне известно. Но проверьте связанный пост один раз, если это поможет

Как подавить сообщения анализа кода для всех элементов типа?< /а>

person Rahul    schedule 17.05.2018
comment
Спасибо. Но это работает только для одного проекта. Пожалуйста, поправьте меня, если я ошибаюсь. (Хотя я не минусующий.) - person ispiro; 17.05.2018
comment
@ispiro да, как вы сказали, конкретная строка кода, см. связанную документацию для получения дополнительной информации. - person Rahul; 17.05.2018
comment
@Rahul, он сказал конкретную строку кода, но у вас неправильный контекст. - person mxmissile; 17.05.2018
comment
@mxmissile, не совсем так, как говорит OP как подавить предупреждение для определенной строки кода или для определенного проекта - person Rahul; 17.05.2018
comment
Спасибо. Но @mxmissile прав. Я просто имел в виду, что я уже видел их, и это не то, что я ищу. Я отредактировал вопрос, чтобы быть немного яснее. - person ispiro; 17.05.2018
comment
@ispiro не думаю, что вы можете скрыть сообщение таким же образом, и отредактировал сообщение с тем же утверждением. - person Rahul; 17.05.2018
comment
Смотрите мой ответ, как отключить это в VS. - person John Koerner; 18.05.2018

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

Настройки в этом файле применяются ко всем проектам в стволе и подпапках, если только они не переопределены другим файлом .editorconfig ниже по дереву папок, например. у вас может быть файл EditorConfig для конкретного проекта в подпапке с другими настройками. См. Иерархия и приоритет файлов для более подробной информации.

Создание файла EditorConfig

Вы можете использовать текстовый редактор для этого, если вы просто хотите изменить один конкретный параметр. Однако Visual Studio может создать для вас файл .editorconfig с разумными значениями по умолчанию для .NET. Из MSDN:

  • Создать новый проект

  • В строке меню выберите Проект > Добавить новый элемент; или нажмите Ctrl+Shift+A

  • Выберите шаблон editorconfig File (.NET), чтобы добавить файл EditorConfig, предварительно заполненный стилем кода .NET по умолчанию, форматированием и соглашениями об именах.

введите здесь описание изображения

  • По желанию удаляем проект - он нам особо не нужен

Visual Studio 2019 — создание файла EditorConfig из текущих настроек

В Visual Studio 2019 вы можете вместо этого создайте файл EditorConfig из ваших текущих настроек. Просто нажмите следующую кнопку в диалоговом окне Параметры под Text Editor > C# > Code Style > General:

введите здесь описание изображения

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

# Remove the line below if you want to inherit .editorconfig settings from higher directories
root = true

# C# files
[*.cs]

Отключение IDE0044 в конфигурационном файле редактора

Чтобы конкретно отключить IDE0044, добавьте или измените следующий параметр в файле .editorconfig:

dotnet_style_readonly_field = false:none

(В Visual Studio 2019 вы можете установить для параметра Prefer readonly значение No в разделе TextEditor-> C# -> Code Style-> General в разделе Параметры, а затем нажать кнопку Generate .editorconfig file from settings, как описано выше).

person Stephen Kennedy    schedule 20.10.2019

Вы можете попробовать использовать Directory.Build.props добавление свойства NoWarn для конкретных предупреждений. Хотя я не проверял.

И, как сказано в другом ответе, лучше устранить основную причину, чем игнорировать ее.

person Uladzislau    schedule 17.05.2018

Я хотел бы добавить к сообщению Стивена, что его решение с файлом .editorconfig у меня не сработало без указания файлов, к которым я хочу применить правило. Например, и учитывая, что я хочу применить правило ко всем тестовым файлам и что я следую соглашению об именах, в котором они заканчиваются «Tests.cs», мне удалось игнорировать правило CA1707 в этих файлах с помощью следующее правило:

[*Tests.cs]
dotnet_diagnostics.CA1707.severity = none

Подробнее о моем ответе здесь

person ccoutinho    schedule 08.04.2020
comment
Я не публиковал свой полный файл, так как я сделал его с помощью VS, и он большой, но у меня действительно есть что-то похожее вверху ([*.cs]). Оказывается, это важно! Я добавил информацию в свой ответ для людей, которые создают файл конфигурации вручную. Спасибо за ответ. - person Stephen Kennedy; 09.04.2020

IDE0044 — «добавить модификатор только для чтения», так почему бы просто не добавить модификатор?

Предупреждения сообщают вам, что вы делаете что-то не так, но приложение скомпилируется.

В идеальном мире лучше иметь ноль предупреждений.

person BlythMeister    schedule 17.05.2018
comment
Потому что в некоторых ситуациях readonly не лучший модификатор для использования (например, для массивов, потому что массивы могут быть изменены, даже если эта конкретная ссылка не может быть изменена). Кроме того, бывают ситуации, когда совершенно законно и желательно переназначать поля, но о них по-прежнему сообщается IDE0044. - person sjcaged; 28.05.2018
comment
Я не согласен. Даже для массива настройка только для чтения означает, что вы не собираетесь избавляться от всего массива. Если вы получили это предупреждение, оно говорит вам, что это совершенно безопасно. По поводу смены массивов. В то время как массив списка великолепен внутри класса, вы должны возвращать только коллекцию только для чтения, чтобы защитить свой массив - person BlythMeister; 28.05.2018
comment
Конечно, если вы также пойдете по пути превращения каждого доступа к полю в правильный доступ. Существуют также причины, не связанные с массивом, для подавления сообщения; независимо от того, согласны ли вы с ними, концепция заключается в том, что это предупреждение о стиле, а не предупреждение компилятора. Это предупреждение IDExxxx, а не предупреждение CSxxxx. Вы можете разумно не согласиться с моим спором о его необходимости, и я могу разумно не согласиться с вашим восприятием его универсальной уместности. Люди могут разумно не соглашаться и разумно желать отключить предупреждение; этот вопрос касается их собственной политики. - person sjcaged; 28.05.2018
comment
В неидеальном, то есть реальном, мире очень легко застрять в проекте с почти 2k предупреждений, в основном неиспользуемыми переменными и т. д. Я не исправляю все это, и их можно безопасно подавить. - person ProfK; 07.09.2018
comment
Ну, многие люди используют VS для программирования Unity C #. В котором вы можете добавить атрибут SerializeField для отображения и изменения переменных в инспекторе, которые VS не может обнаружить, и это предупреждение становится действительно раздражающим. - person ; 28.02.2019
comment
Должна ли любая конструкция switch-case иметь раздел по умолчанию? Уверены ли вы? - person nim; 22.04.2019