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