CA2255: ModuleInitializer атрибут не должен использоваться в библиотеках

Свойство Значение
Идентификатор правила CA2255
Заголовок Атрибут ModuleInitializer не должен использоваться в библиотеках
Категория Использование
Исправление является критическим или не критическим Не критическое
Включен по умолчанию в .NET 8 Как предупреждение

Причина

Применение ModuleInitializerAttribute к методу в библиотеке классов.

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

Инициализаторы модулей предназначены для использования кодом приложения, чтобы компоненты приложения были инициализированы до того, как начнется выполнение кода приложения. Если код библиотеки объявляет метод с помощью ModuleInitializerAttribute, он может помешать инициализации приложения, а также привести к ограничениям возможностей обрезки этого приложения. Поэтому код библиотеки не должен использовать атрибут ModuleInitializerAttribute.

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

Вместо использования методов, помеченных с ModuleInitializerAttributeпомощью, библиотека должна предоставлять методы, которые можно использовать для инициализации любых компонентов библиотеки и разрешать приложению вызывать метод во время инициализации приложения.

Когда лучше отключить предупреждения

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

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

Если вы просто хотите отключить одно нарушение, добавьте директивы препроцессора в исходный файл, чтобы отключить и повторно включить правило.

#pragma warning disable CA2255
// The code that's violating the rule is on this line.
#pragma warning restore CA2255

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

[*.{cs,vb}]
dotnet_diagnostic.CA2255.severity = none

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

[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none

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

См. также