共用方式為


.NET 9+ 中的實驗性功能

從 .NET 9 開始,某些功能會使用 ExperimentalAttribute 來指出 API 圖形或功能包含在版本中,但尚未正式支援。 實驗性功能可讓 .NET 小組收集 API 圖形和功能的意見反應,以精簡 API 並移除 [Experimental] 下一個主要版本中的屬性。

當您的程式代碼參考實驗性 API 時,編譯程式會產生標識元類似 SYSLIB5XXX的錯誤。 標示為實驗性的每個功能都有唯一的診斷標識符。 若要表示同意使用實驗性功能,請隱藏特定的診斷。 您可以透過任何隱藏診斷的方法來執行此動作,但建議的方法是將診斷新增至專案的 <NoWarn> 屬性。 如需詳細資訊,請參閱隱藏警告

由於每個實驗性功能都有個別的識別碼,因此同意使用一個實驗性功能並不表示同意使用另一個實驗性功能。

參考

下表提供 .NET 9+ 中實驗 API 的索引 SYSLIB5XXX

診斷識別碼 實驗版本 描述
SYSLIB5001 .NET 9 Tensor<T>和中的相關 API 是實驗性的System.Numerics.Tensors
SYSLIB5002 .NET 9 SystemColors 替代色彩是實驗性的
SYSLIB5003 .NET 9 Sve 是實驗性的
SYSLIB5004 .NET 9 DivRem(UInt32, Int32, Int32) 是實驗性的,因為效能不如優化 T.DivRem
SYSLIB5005 .NET 9 System.Formats.Nrbf 是實驗性的

隱藏警告

使用實驗性功能可讓您在功能標示為穩定且完全支援之前,先提交 API 圖形和功能的意見反應。 但使用 功能會產生來自編譯程式的警告。 當您隱藏警告時,您確認 API 圖形或功能可能會在下一個主要版本中變更。 甚至可能會移除 API。 您可以透過 <NoWarn> 程式代碼中的項目設定(建議)或 #pragma 指示詞來隱藏警告。

若要隱藏專案檔中的警告:

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

若要隱藏程式碼中的警告:

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

另請參閱