SYSLIB0066: IStartupValidator jest przestarzały

Począwszy od platformy .NET 11, IStartupValidator uznano za przestarzałe. Podczas odwoływania się do tego interfejsu lub jego implementowania kompilator generuje ostrzeżenie SYSLIB0066 z komunikatem Implement IAsyncStartupValidator instead. Interfejs pozostaje dostępny i funkcjonalny pod kątem zgodności.

Przyczyna wycofania z użycia

Uruchamianie hosta ma asynchroniczny punkt wejścia poprzez element StartAsync. Nowe niestandardowe moduły sprawdzania poprawności uruchamiania powinny używać walidatorów IAsyncStartupValidator. Asynchroniczny interfejs ValidateAsync oznacza, że implementacje asynchroniczne nie muszą zapewniać nieużywanej metody synchronicznej Validate. Oba interfejsy są niezależne.

Workaround

Aby przeprowadzić migrację niestandardowego modułu sprawdzania poprawności uruchamiania, zaimplementuj i zarejestruj IAsyncStartupValidator zamiast tego. Użyj operacji asynchronicznych w ValidateAsync, gdy wymaga ich walidacja, i prześlij token anulowania. Zarejestruj implementację tylko w ramach udostępnianego przez nią kontraktu walidacji uruchamiania; nie rejestruj jej zarówno jako IStartupValidator, jak i IAsyncStartupValidator.

Aplikacje, które tylko wywołują OptionsBuilder<TOptions>.ValidateOnStart() i nie implementują bezpośrednio interfejsu modułu sprawdzania poprawności uruchamiania, zwykle nie muszą zmieniać kodu.

Pomijanie ostrzeżenia

Jeśli musisz użyć przestarzałego interfejsu, możesz wyłączyć ostrzeżenie w kodzie lub w pliku projektu.

Aby pominąć pojedyncze naruszenie, dodaj dyrektywy preprocesora do pliku źródłowego, aby wyłączyć, a następnie ponownie włączyć ostrzeżenie.

#pragma warning disable SYSLIB0066

// Code that uses the obsolete interface.

#pragma warning restore SYSLIB0066

Aby wyłączyć wszystkie SYSLIB0066 ostrzeżenia w projekcie, dodaj właściwość <NoWarn> do pliku projektu.

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <NoWarn>$(NoWarn);SYSLIB0066</NoWarn>
  </PropertyGroup>
</Project>

Aby uzyskać więcej informacji, zobacz Pomijanie ostrzeżeń.