CA2255 : l’attribut ModuleInitializer
ne doit pas être utilisé dans les bibliothèques
Propriété | Value |
---|---|
Identificateur de la règle | CA2255 |
Titre | L’attribut ModuleInitializer ne doit pas être utilisé dans les bibliothèques |
Catégorie | Utilisation |
Le correctif est cassant ou non cassant | Sans rupture |
Activé par défaut dans .NET 8 | À titre d’avertissement |
Cause
ModuleInitializerAttribute est appliqué à une méthode dans une bibliothèque de classes.
Description de la règle
Les initialiseurs de module sont destinés à être utilisés par le code d’application pour s’assurer que les composants d’une application sont initialisés avant le début de l’exécution du code de l’application. Si le code de bibliothèque déclare une méthode avec ModuleInitializerAttribute, ce dernier peut interférer avec l’initialisation de l’application et entraîner une limitation des capacités de filtrage de cette application. Le code de bibliothèque ne doit donc pas utiliser l’attribut ModuleInitializerAttribute.
Comment corriger les violations
Au lieu d’utiliser des méthodes marquées de ModuleInitializerAttribute, la bibliothèque doit exposer des méthodes permettant d’initialiser tous ses composants et d’autoriser l’application à appeler la méthode pendant l’initialisation de l’application.
Quand supprimer les avertissements
Vous pouvez sans risque supprimer les avertissements de cette règle si la solution utilise une bibliothèque de classes à des fins de factorisation de code et que la méthode ModuleInitializerAttribute ne fait pas partie d’une bibliothèque ni d’un package partagé ou distribué.
Supprimer un avertissement
Si vous voulez supprimer une seule violation, ajoutez des directives de préprocesseur à votre fichier source pour désactiver et réactiver la règle.
#pragma warning disable CA2255
// The code that's violating the rule is on this line.
#pragma warning restore CA2255
Pour désactiver la règle sur un fichier, un dossier ou un projet, définissez sa gravité sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_diagnostic.CA2255.severity = none
Pour désactiver la catégorie entière des règles, définissez la gravité de la catégorie sur none
dans le fichier de configuration.
[*.{cs,vb}]
dotnet_analyzer_diagnostic.category-Usage.severity = none
Pour plus d’informations, consultez Comment supprimer les avertissements de l’analyse de code.