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, která může být destruktivní nebo nedestruktivní Nezlomitelný
Povoleno ve výchozím nastavení v .NET 10 Jako chyba
Příslušné jazyky C# a Visual Basic

Příčina

Klient používá náhledová rozhraní API nebo typy ve svém sestavení, aniž by se výslovně rozhodl buď místně, nebo na úrovni modulu či 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.

Editor kódu s upozorněním CA2252

Lib je typ náhledu, který je konstruovaný v metodě Main. Main sama o sobě není označena jako metoda náhledu, takže diagnostika se vytváří na dvou voláních konstruktorů uvnitř Main.

Jak opravit porušení

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

  • Přesuňte místo volání do rozsahu anotace tím, že anotujete 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. Z toho vyplývá, ž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í metod nového rozhraní budou diagnostikovány. System.Private.CoreLib.csproj používá tuto techniku k zpřístupnění obecných matematických funkcí u číselných typů, jako jsou Int32, Double a Decimal.

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

CA2252 – Potlačení diagnostiky funkcí ve verzi Preview

CA2252 – Explicitní označení implementací rozhraní

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é