Share via


CA2255: Het ModuleInitializer kenmerk mag niet worden gebruikt in bibliotheken

Eigenschappen Weergegeven als
Regel-id CA2255
Titel Het ModuleInitializer kenmerk mag niet worden gebruikt in bibliotheken
Categorie Gebruik
Oplossing is brekend of niet-brekend Niet-brekend
Standaard ingeschakeld in .NET 8 Als waarschuwing

Oorzaak

Toepassen op ModuleInitializerAttribute een methode in een klassebibliotheek.

Beschrijving van regel

Module-initializers zijn bedoeld om te worden gebruikt door toepassingscode om ervoor te zorgen dat de onderdelen van een toepassing worden geïnitialiseerd voordat de toepassingscode wordt uitgevoerd. Als bibliotheekcode een methode declareert met de ModuleInitializerAttributemethode, kan deze de initialisatie van toepassingen verstoren en ook leiden tot beperkingen in de beperkingsmogelijkheden van die toepassing. Bibliotheekcode mag daarom niet gebruikmaken van het ModuleInitializerAttribute kenmerk.

Schendingen oplossen

In plaats van methoden te gebruiken die zijn gemarkeerd ModuleInitializerAttribute, moet de bibliotheek methoden beschikbaar maken die kunnen worden gebruikt om onderdelen in de bibliotheek te initialiseren en de toepassing de methode te laten aanroepen tijdens de initialisatie van de toepassing.

Wanneer waarschuwingen onderdrukken

Het is veilig om waarschuwingen van deze regel te onderdrukken als een oplossing gebruikmaakt van een klassebibliotheek voor codefactoringdoeleinden en de ModuleInitializerAttribute methode geen deel uitmaakt van een gedeelde of gedistribueerde bibliotheek of pakket.

Een waarschuwing onderdrukken

Als u slechts één schending wilt onderdrukken, voegt u preprocessorrichtlijnen toe aan uw bronbestand om de regel uit te schakelen en vervolgens opnieuw in te schakelen.

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

Als u de regel voor een bestand, map of project wilt uitschakelen, stelt u de ernst none ervan in op het configuratiebestand.

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

Als u deze hele categorie regels wilt uitschakelen, stelt u de ernst voor de categorie none in op in het configuratiebestand.

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

Zie Codeanalysewaarschuwingen onderdrukken voor meer informatie.

Zie ook