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.