CA2255: Attributet ModuleInitializer ska inte användas i bibliotek

Property Värde
Regel-ID CA2255
Title Attributet ModuleInitializer ska inte användas i bibliotek
Kategori Användning
Korrigeringen är icke-bakåtkompatibel Icke-icke-bryta
Aktiverad som standard i .NET 8 Som varning

Orsak

Tillämpa på ModuleInitializerAttribute en metod i ett klassbibliotek.

Regelbeskrivning

Modulinitierare är avsedda att användas av programkod för att säkerställa att ett programs komponenter initieras innan programkoden börjar köras. Om bibliotekskoden deklarerar en metod med ModuleInitializerAttributekan den störa programinitiering och även leda till begränsningar i programmets trimningsfunktioner. Bibliotekskoden bör därför inte använda attributet ModuleInitializerAttribute .

Så här åtgärdar du överträdelser

I stället för att använda metoder som är markerade med ModuleInitializerAttributeska biblioteket exponera metoder som kan användas för att initiera alla komponenter i biblioteket och tillåta att programmet anropar metoden under programinitieringen.

När du ska ignorera varningar

Det är säkert att ignorera varningar från den här regeln om en lösning använder ett klassbibliotek i kodfaktorsyfte och metoden inte ingår i ModuleInitializerAttribute ett delat eller distribuerat bibliotek eller paket.

Ignorera en varning

Om du bara vill förhindra en enda överträdelse lägger du till förprocessordirektiv i källfilen för att inaktivera och aktiverar sedan regeln igen.

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

Om du vill inaktivera regeln för en fil, mapp eller ett projekt anger du dess allvarlighetsgrad till none i konfigurationsfilen.

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

Om du vill inaktivera hela den här regelkategorin anger du allvarlighetsgraden för kategorin till none i konfigurationsfilen.

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

Mer information finns i Så här utelämnar du kodanalysvarningar.

Se även