У меня есть сгенерированный код с кучей предупреждений компилятора. Я хочу отключить их в сгенерированном файле, но сохранить эти предупреждения в остальной части проекта, чтобы их можно было исправить. Я использую Visual Studio 2019 Community Edition со сгенерированными файлами из Entity Framework и других пакетов NuGet.
Я хочу сделать это без изменения файлов, поэтому я не получу предупреждения, если они будут перегенерированы. Я также не хочу отключать весь проект предупреждений, поскольку они обычно являются полезными предупреждениями. Я также не хочу редактировать пакеты NuGet, поскольку для этого потребуется либо не обновлять их, поскольку доступны более новые выпуски, либо, возможно, придется вносить изменения в новую версию.
Я уже много читал, но, очевидно, размещать ссылки - это слишком, поэтому я их удалил. Загляните в историю редактирования, если хотите их увидеть.
Рассматриваемый файл является Reference.cs
для подключенной службы. Он имеет пространство имен Proxy.ProvisioningService
, и этот файл содержит пару десятков классов. У меня также есть несколько файлов миграции Entity Framework, которые имеют ту же проблему в совершенно другом решении.
У меня есть файл GlobalSuppressions.cs, в который я хотел бы добавить CS1591 (конкретно), но моя текущая запись не работает. Другие записи работают для других предупреждений, и я пробовал варианты приведенного ниже кода для работы, в том числе пытался сопоставить формат других записей, но пока ничего не работает. Я изменил Build из Compile, удалил MessageId
, изменил Scope
на модуль, сборку и пространство имен и потомков, и я попробовал пару разных способов установить Target
.
[assembly: SuppressMessage("Build", "CS1591:Missing XML comment for publicly visible type or member", Justification = "Generated code", MessageId = "CS1591", Scope = "namespaceanddescendants", Target = "Proxy.ProvisioningService")]
В одной из внешних ссылок предлагается щелкнуть правой кнопкой мыши ошибку, перейти к Suppress -> In Suppression File
, но этого варианта нет в списке. Это намек на то, что я не могу сделать это в файле GlobalSuppressions.cs
?
Я пытался сделать так, чтобы Visual Studio 2019 Community Edition автоматически подавляла предупреждение с помощью пункта меню Analyze -> Build And Suppress Active Issues -> For Project
, но это просто добавило в файл кучу директив #pragma
, которые нужно было бы заменить, если файл был восстановлен, что я и хочу избегать.
В одном из связанных ответов предлагалось написать сценарий для добавления директив #pragma
при компиляции, но этот сценарий кажется мне хаком. Я бы предпочел вообще не редактировать сгенерированный код.
Я также не хочу помещать его в раздел Project -> Properties -> Build -> Suppress Warnings
, так как я хочу, чтобы написанный от руки код по-прежнему выдавал эти предупреждения.
В другом ответе SE/SO предлагается использовать атрибут GeneratedCodeAttribute
, чтобы предотвратить появление предупреждений о сгенерированных файлах. К сожалению, в моем файле уже есть это, и он все еще выдает предупреждения.
Другое предложение состояло в том, чтобы отключить предупреждения для этих сгенерированных файлов:
Чтобы подавить предупреждения для сгенерированного кода в проекте
Щелкните проект правой кнопкой мыши в обозревателе решений и выберите пункт Свойства.
Выберите вкладку Анализ кода.
Установите флажок Подавить результаты из сгенерированного кода.
К сожалению, этот параметр уже выбран и не подавляет предупреждение CS1591.
Итак, мой актуальный вопрос:
Как я могу подавить предупреждения, в частности CS1591, из сгенерированных файлов кода, не редактируя их и не подавляя предупреждение во всем проекте?
#pragma
исчезает, так что это не настоящее решение. - person computercarguy   schedule 25.02.2021#pragma
в файлы генерации кода из-за того, что файлы, возможно, регенерируются и приходится переделывать работу. - person computercarguy   schedule 26.02.2021[0](link][1](link)[2](link)
, но это трудно сказать. 3) Я не думаю, что есть что-то неправильное в вопросе о том, в какой форме я нашел этот метод для решения своей проблемы, но он мне не нравится, честно говоря, именно так выглядит исследовательская работа. - person jrh   schedule 02.03.2021