Compartilhar via


Recursos experimentais no .NET 9+

A partir do .NET 9, alguns recursos usam o ExperimentalAttribute para indicar que a forma ou a funcionalidade da API está incluída na versão, mas ainda não tem suporte oficial. Os recursos experimentais permitem que a equipe do .NET colete comentários sobre a forma e a funcionalidade de uma API com a intenção de refinar a API e remover o [Experimental] atributo na próxima versão principal.

Quando o código faz referência a uma API experimental, o compilador produz um erro com uma ID como SYSLIB5XXX. Cada recurso marcado como experimental tem uma ID de diagnóstico exclusiva. Para expressar consentimento para usar um recurso experimental, você suprime o diagnóstico específico. Você pode fazer isso por meio de qualquer um dos meios para suprimir diagnósticos, mas a maneira recomendada é adicionar o diagnóstico à propriedade <NoWarn> do projeto. Para obter mais informações, consulte Suprimir avisos.

Como cada recurso experimental tem uma ID separada, consentir com o uso de um recurso experimental não significa consentir com o uso de outro.

Referência

A tabela a seguir fornece um índice para as SYSLIB5XXX APIs experimentais no .NET 9+.

ID do diagnóstico Versão experimental Descrição
SYSLIB5001 .NET 9 Tensor<T> e APIs relacionadas em System.Numerics.Tensors são experimentais
SYSLIB5002 .NET 9 SystemColors cores alternativas são experimentais
SYSLIB5003 .NET 9 Sve é experimental
SYSLIB5004 .NET 9 DivRem(UInt32, Int32, Int32) é experimental, pois o desempenho não é tão otimizado quanto T.DivRem
SYSLIB5005 .NET 9 System.Formats.Nrbf é experimental

Suprimir avisos

O uso de um recurso experimental oferece a oportunidade de enviar comentários sobre a forma e a funcionalidade da API antes que o recurso seja marcado como estável e totalmente compatível. Mas o uso do recurso produz um aviso do compilador. Ao suprimir o aviso, você reconhece que a forma ou a funcionalidade da API pode ser alterada na próxima versão principal. A API pode até ser removida. Você pode suprimir o aviso por meio de uma <NoWarn> configuração de projeto (recomendado) ou de uma #pragma diretiva no código.

Para suprimir os avisos em um arquivo de projeto, faça o seguinte:

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   <TargetFramework>net9.0</TargetFramework>
   <!-- NoWarn below suppresses SYSLIB5001 project-wide -->
   <NoWarn>$(NoWarn);SYSLIB5001</NoWarn>
   <!-- To suppress multiple warnings, you can use multiple NoWarn elements -->
   <NoWarn>$(NoWarn);SYSLIB5002</NoWarn>
   <NoWarn>$(NoWarn);SYSLIB5003</NoWarn>
   <!-- Alternatively, you can suppress multiple warnings by using a semicolon-delimited list -->
   <NoWarn>$(NoWarn);SYSLIB5001;SYSLIB5002;SYSLIB5003</NoWarn>
  </PropertyGroup>
</Project>

Para suprimir os avisos no código, faça o seguinte:

// Disable the warning.
#pragma warning disable SYSLIB5001

// Code that uses an experimental API that produces the diagnostic SYSLIB5001
//...

// Re-enable the warning.
#pragma warning restore SYSLIB5001

Confira também