FSharp.Core 目標框架

函式庫不能直接使用其編譯目標中不存在的 API。 FSharp.Core 11 新增了與 netstandard2.0 和 netstandard2.1 並列的 net10.0 建置版本,因此它能使用現代的 .NET API,而不會放棄舊目標。

目標專屬 API 與行為

這些建置可以暴露不同的 API 和實作。 目標指定決策明確選擇現代目標;它不會自動遵循編譯器的開發目標。

你的專案使用哪個組建版本

NuGet 會為每個專案目標選擇最接近的相容資產。 .NET 10 及之後的專案可以選擇lib/net10.0/FSharp.Core.dll;較舊的相容目標選擇 .NET 標準資產。

若要診斷可用性:

  1. 請檢查已解析的 FSharp.Core 套件版本。
  2. 在 obj/project.assets.json 中檢查選取的編譯與執行階段資產。
  3. 檢查執行該應用程式的執行時,而不只是它的參考組件。

<LangVersion>preview</LangVersion> 啟用編譯器行為。 它不會補上缺少的 Core 成員、改選不同的套件資產,也不提供執行階段支援。

差異範例

Area Core 11 中可用
ValueTask 輔助程式與相關多載 可在 netstandard2.1 和 net10.0 中使用,netstandard2.0 中不可用。
保持界限的 Array2D.map、mapi 和 copy 此net10.0版本使用較新的 .NET 分配 API;.NET 標準版仍保留備用版本。
執行階段非同步回傳內建函式 由 net10.0 建置所提供;編譯器、語言、參考及執行階段的要求也適用。

詳情請參見 非同步與任務函式 ,以及 Array2D 和原生 AOT。 普通非同步/任務輔助工具和 print/printn 在全部三個版本中皆可使用。

F# 互動式與非同步處置

F# 任務表達式已支援在相容的已編譯專案中支援 IAsyncDisposable 資源。 F# 11 的封裝修正為 F# Interactive 提供新版 Core 組建,所以等效use和use!程式碼在那裡也能運作。 更新工具組,而不只是應用程式的套件參考。

Runtime async 是一個獨立的執行階段合約

Core 版本 net10.0 的建置目標並未建立執行時非同步支援。 在 執行階段非同步實驗中,請遵循編譯器、參考組件及執行階段各自的要求。

也請參閱