.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