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
Дополнительные сведения см. в разделе Практическое руководство. Скрытие предупреждений анализа кода.