FSharp.Core 目标框架

库不能直接使用其编译目标中缺少的 API。 FSharp.Core 11 添加了一个 net10.0 构建版本,与 netstandard2.0 和 netstandard2.1 并存,因此它可以使用新式 .NET API,而无需放弃对较旧目标框架的支持。

特定于目标的 API 和行为

构建版本可以公开不同的 API 和实现。 目标选择决策显式选择现代目标;它不会自动遵循编译器的开发目标。

项目使用的构建版本

NuGet 为每个项目目标选择最接近的兼容资产。 .NET 10 及更高版本的项目可以选择 lib/net10.0/FSharp.Core.dll;较旧的兼容目标则选择 .NET Standard 资产。

诊断可用情况:

  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 Standard 版本保留其回退方案。
运行时-异步返回内在函数 由 net10.0 构建公开;编译器、语言、引用和运行时要求 也适用。

有关详细信息,请参阅 Async 和任务函数 以及 Array2D 和 Native AOT。 普通异步/任务帮助程序和 print/printn 可在所有三个版本中使用。

F# 交互式和异步处置

F# 任务表达式已支持在兼容的已编译项目中的 IAsyncDisposable 资源。 F# 11 打包修补程序为 F# Interactive 提供现代化的 Core 构建版本,因此等效的use和use!代码也可以在那里运行。 更新工具集,而不仅仅是应用程序的包引用。

运行时异步是单独的运行时约定

核心版本 net10.0 的目标不提供运行时异步支持。 遵循 运行时异步试验中的单独编译器、引用和运行时要求。

另请参阅