Condividi tramite


Funzionalità sperimentali in .NET 9+

A partire da .NET 9, alcune funzionalità usano per ExperimentalAttribute indicare che la forma o la funzionalità dell'API è inclusa nella versione ma non ancora supportata ufficialmente. Le funzionalità sperimentali consentono al team .NET di raccogliere commenti e suggerimenti sulla forma e sulle funzionalità di un'API con lo scopo di perfezionare l'API e rimuovere l'attributo [Experimental] nella versione principale successiva.

Quando il codice fa riferimento a un'API sperimentale, il compilatore genera un errore con un ID come SYSLIB5XXX. Ogni funzionalità contrassegnata come sperimentale ha un ID di diagnostica univoco. Per esprimere il consenso all'uso di una funzionalità sperimentale, eliminare la diagnostica specifica. È possibile utilizzare qualsiasi mezzo di eliminazione della diagnostica, ma si consiglia di procedere aggiungendo la diagnostica alla proprietà <NoWarn> del progetto. Per altre informazioni, vedere Non visualizzare gli avvisi.

Considerando che ogni funzionalità sperimentale ha un ID separato, il consenso all'utilizzo di una funzionalità sperimentale non vale per le altre funzionalità.

Riferimento

La tabella seguente fornisce un indice per le SYSLIB5XXX API sperimentali in .NET 9+.

ID di diagnostica Versione sperimentale Descrizione
SYSLIB5001 .NET 9 Tensor<T> e le API correlate in System.Numerics.Tensors sono sperimentali
SYSLIB5002 .NET 9 SystemColors i colori alternativi sono sperimentali
SYSLIB5003 .NET 9 Sve è sperimentale
SYSLIB5004 .NET 9 DivRem(UInt32, Int32, Int32) è sperimentale perché le prestazioni non sono ottimizzate come T.DivRem
SYSLIB5005 .NET 9 System.Formats.Nrbf è sperimentale

Non visualizzare gli avvisi

L'uso di una funzionalità sperimentale consente di inviare commenti e suggerimenti sulla forma e sulle funzionalità dell'API prima che la funzionalità sia contrassegnata come stabile e completamente supportata. Tuttavia, l'uso della funzionalità genera un avviso dal compilatore. Quando si elimina l'avviso, si riconosce che la forma o la funzionalità dell'API potrebbe cambiare nella versione principale successiva. L'API potrebbe anche essere rimossa. È possibile eliminare l'avviso tramite un'impostazione <NoWarn> del progetto (scelta consigliata) o una #pragma direttiva nel codice.

Per evitare di visualizzare gli avvisi in un file di progetto:

<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>

Per evitare di visualizzare gli avvisi nel codice:

// 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

Vedi anche