Udostępnij za pośrednictwem


CA2255: Atrybut ModuleInitializer nie powinien być używany w bibliotekach

Właściwości Wartość
Identyfikator reguły CA2255
Tytuł Atrybut ModuleInitializer nie powinien być używany w bibliotekach
Kategoria Użycie
Poprawka powodująca niezgodność lub niezgodność Niezgodność
Domyślnie włączone na platformie .NET 9 Jako ostrzeżenie

Przyczyna

ModuleInitializerAttribute Stosowanie do metody w bibliotece klas.

Opis reguły

Inicjatory modułów mają być używane przez kod aplikacji, aby upewnić się, że składniki aplikacji są inicjowane przed rozpoczęciem wykonywania kodu aplikacji. Jeśli kod biblioteki deklaruje metodę za pomocą ModuleInitializerAttributemetody , może zakłócać inicjowanie aplikacji, a także prowadzić do ograniczeń w możliwościach przycinania tej aplikacji. W związku z tym kod biblioteki nie powinien używać atrybutu ModuleInitializerAttribute .

Jak naprawić naruszenia

Zamiast używać metod oznaczonych za pomocą ModuleInitializerAttributemetody , biblioteka powinna uwidocznić metody, które mogą służyć do inicjowania dowolnych składników w bibliotece i zezwalania aplikacji na wywoływanie metody podczas inicjowania aplikacji.

Kiedy pomijać ostrzeżenia

Można bezpiecznie pominąć ostrzeżenia z tej reguły, jeśli rozwiązanie używa biblioteki klas do celów faktorowania kodu, a ModuleInitializerAttribute metoda nie jest częścią udostępnionej lub rozproszonej biblioteki lub pakietu.

Pomijanie ostrzeżenia

Jeśli chcesz po prostu pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć regułę.

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

Aby wyłączyć regułę dla pliku, folderu lub projektu, ustaw jego ważność na none w pliku konfiguracji.

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

Aby wyłączyć tę całą kategorię reguł, ustaw ważność dla kategorii na none w pliku konfiguracji.

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

Aby uzyskać więcej informacji, zobacz Jak pominąć ostrzeżenia dotyczące analizy kodu.

Zobacz też