CA2252: Před použitím funkcí ve verzi Preview se přihlaste

Vlastnost Hodnota
ID pravidla CA2252
Název Přihlášení k funkcím ve verzi Preview před jejich použitím
Kategorie Využití
Oprava způsobující chybu nebo chybu způsobující chybu Nenarušující
Povoleno ve výchozím nastavení v .NET 8 Jako chyba

Příčina

Klient používá rozhraní API nebo typy verze Preview ve svém sestavení bez výslovného souhlasu buď místně, nebo na úrovni modulu nebo sestavení.

Popis pravidla

Když je spotřebováno rozhraní API nebo sestavení, které je opatřeno atributem RequiresPreviewFeaturesAttribute , toto pravidlo zkontroluje, jestli se web volání přihlásil k funkcím ve verzi Preview. Web volání se přihlásil k funkcím ve verzi Preview, pokud platí jedna z následujících možností:

  • Je v rozsahu poznámky RequiresPreviewFeaturesAttribute .
  • Je součástí sestavení nebo modulu, který se už přihlásil k funkcím ve verzi Preview.

Následující obrázek ukazuje příklad diagnostiky CA2252.

Code editor with CA2252 warning.

Tady je typ náhledu vytvořený Lib v Main metodě. Main sama o sobě není opatřena poznámkami jako metoda preview, takže diagnostika se vytváří na dvou konstruktorech volání uvnitř Main.

Jak opravit porušení

Porušení můžete opravit dvěma způsoby:

  • Přineste web volání do rozsahu poznámky tak, že opatříte jeho nadřazený objekt .RequiresPreviewFeaturesAttribute V předchozím příkladu APreviewMethod je anotována atributem RequiresPreviewFeatures , takže analyzátor ignoruje použití typu preview uvnitř APreviewMethod. Následuje, že volající APreviewMethod budou muset provést podobné cvičení.

  • Můžete se také přihlásit k funkcím ve verzi Preview na úrovni sestavení nebo modulu. To značí analyzátoru, že použití typu Preview v sestavení je žádoucí a v důsledku toho se tímto pravidlem nevygenerují žádné chyby. Toto je upřednostňovaný způsob, jak využívat závislosti ve verzi Preview. Pokud chcete povolit funkce preview v celém sestavení, nastavte vlastnost EnablePreviewFeatures v .csproj souboru:

  <PropertyGroup>
    <EnablePreviewFeatures>true</EnablePreviewFeatures>
  </PropertyGroup>

Kdy potlačit upozornění

Potlačení upozornění z tohoto pravidla se doporučuje pouze pro pokročilé případy použití, kdy je potřeba explicitně zakázat diagnostiku rozhraní API. V takovém případě musíte být ochotni převzít odpovědnost za správné označení rozhraní API ve verzi Preview. Představte si například případ, kdy existující typ implementuje nové rozhraní Preview. Vzhledem k tomu, že celý typ nelze označit jako náhled (kvůli zpětné kompatibilitě), může být diagnostika kolem definice typu zakázána místně. Dále je potřeba označit implementace rozhraní Preview jako preview. Stávající typ je teď možné použít jako předtím, ale volání nových metod rozhraní získají diagnostiku. System.Private.CoreLib.csproj používá tuto techniku k zveřejnění obecných matematických funkcí u číselných typů, jako Int32jsou , Doublea Decimal.

Následující obrázky ukazují, jak místně zakázat analyzátor CA2252.

CA2252 - Suppress Detect Preview Feature Diagnostic

CA2252 - Mark Interface Implementations Explicitly

Poznámka:

Falešně pozitivní upozornění z tohoto pravidla se můžou zobrazit, pokud platí všechny tyto skutečnosti:

  • Používáte Sadu Visual Studio 2022 verze 17.5 nebo novější se starší verzí sady .NET SDK, tj. .NET 6 nebo starší.
  • Používáte analyzátory ze sady .NET 6 SDK nebo starší verze balíčků analyzátoru, například Microsoft.CodeAnalysis.FxCopAnalyzers.

V tomto případě je bezpečné potlačit falešně pozitivní upozornění. Falešně pozitivní výsledky jsou způsobeny zásadní změnou kompilátoru jazyka C#. Zvažte použití novějšího analyzátoru, který obsahuje opravu falešně pozitivních upozornění. Upgradujte na Microsoft.CodeAnalysis.NetAnalyzers verze 7.0.0-preview1.22464.1 nebo novější nebo použijte analyzátory ze sady .NET 7 SDK.

Potlačení upozornění

Pokud chcete pouze potlačit jedno porušení, přidejte do zdrojového souboru direktivy preprocesoru, abyste pravidlo zakázali a znovu povolili.

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

Pokud chcete pravidlo pro soubor, složku nebo projekt zakázat, nastavte jeho závažnost v none konfiguračním souboru.

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

Chcete-li tuto celou kategorii pravidel zakázat, nastavte závažnost kategorie na none hodnotu v konfiguračním souboru.

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

Další informace naleznete v tématu Jak potlačit upozornění analýzy kódu.

Viz také