SYSLIB0066: O IStartupValidator está obsoleto

A partir do .NET 11, IStartupValidator está obsoleto. Quando faz referência a esta interface ou a implementa, o compilador gera um aviso SYSLIB0066 com a mensagem Implement IAsyncStartupValidator instead. A interface permanece disponível e funcional para compatibilidade.

Motivo da obsolescência

O arranque do host tem um ponto de entrada assíncrono através de StartAsync. Novos validadores personalizados de arranque devem usar IAsyncStartupValidator. O seu contrato assíncrono ValidateAsync significa que as implementações assíncronas não precisam de fornecer um método síncrono Validate não utilizado. As duas interfaces são independentes.

Solução

Para migrar um validador de arranque personalizado, implementa e regista IAsyncStartupValidator em vez disso. Utilize operações assíncronas em ValidateAsync quando a validação as exigir e encaminhe o token de cancelamento. Registe a implementação apenas sob o contrato de validação de arranque que fornece; não a registe sob ambos os contratos IStartupValidator e IAsyncStartupValidator.

Aplicações que apenas chamam OptionsBuilder<TOptions>.ValidateOnStart() e não implementam diretamente uma interface de validador de arranque normalmente não precisam de alterar o seu código.

Suprimir um aviso

Se tiver de usar a interface obsoleta, pode suprimir o aviso no código ou no ficheiro do seu projeto.

Para suprimir uma única violação, adicione diretivas do pré-processador ao seu ficheiro fonte para desativar e depois reativar o aviso.

#pragma warning disable SYSLIB0066

// Code that uses the obsolete interface.

#pragma warning restore SYSLIB0066

Para suprimir todos os avisos SYSLIB0066 no seu projeto, adicione a propriedade <NoWarn> ao ficheiro de projeto.

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

Para obter mais informações, consulte Suprimir avisos.