CA2255: Attribut ModuleInitializer nicht in Bibliotheken verwenden

Eigenschaft Wert
Regel-ID CA2255
Titel Das ModuleInitializer-Attribut sollte nicht in Bibliotheken verwendet werden
Kategorie Verwendung
Fix führt oder führt nicht zur Unterbrechung Nicht unterbrechend
Standardmäßig in .NET 8 aktiviert Als Warnung

Ursache

Anwenden von ModuleInitializerAttribute auf eine Methode innerhalb einer Klassenbibliothek.

Regelbeschreibung

Modulinitialisierer sind zur Verwendung im Anwendungscode vorgesehen, um die Initialisierung der Anwendungskomponenten sicherzustellen, bevor der Anwendungscode mit der Ausführung beginnt. Wenn Bibliothekscode eine Methode mit ModuleInitializerAttribute deklariert, kann dies die Anwendungsinitialisierung beeinträchtigen und auch zu Einschränkungen in den Kürzungsmöglichkeiten dieser Anwendung führen. Bibliothekscode sollte daher nicht das ModuleInitializerAttribute-Attribut verwenden.

Behandeln von Verstößen

Anstatt mit ModuleInitializerAttribute markierte Methoden zu verwenden, sollte eine Bibliothek Methoden verfügbar machen, die verwendet werden können, um Komponenten innerhalb der Bibliothek zu initialisieren, und der Anwendung erlauben, die Methode während der Anwendungsinitialisierung aufzurufen.

Wann sollten Warnungen unterdrückt werden?

Es ist sicher, Warnungen aus dieser Regel zu unterdrücken, wenn eine Projektmappe eine Klassenbibliothek für Codefactoringzwecke verwendet und die ModuleInitializerAttribute-Methode nicht Teil einer freigegebenen oder verteilten Bibliothek oder eines Pakets ist.

Unterdrücken einer Warnung

Um nur eine einzelne Verletzung zu unterdrücken, fügen Sie der Quelldatei Präprozessoranweisungen hinzu, um die Regel zu deaktivieren und dann wieder zu aktivieren.

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

Um die Regel für eine Datei, einen Ordner oder ein Projekt zu deaktivieren, legen Sie den Schweregrad in der Konfigurationsdatei auf none fest.

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

Um diese gesamte Kategorie von Regeln zu deaktivieren, legen Sie den Schweregrad für die Kategorie in der Konfigurationsdatei auf none fest.

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

Weitere Informationen finden Sie unter Vorgehensweise: Unterdrücken von Codeanalyse-Warnungen.

Weitere Informationen