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 9 | 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.