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 Standard アセットが選択されます。

可用性を診断するには:

  1. 解決された FSharp.Core パッケージのバージョンを確認します。
  2. obj/project.assets.jsonで選択したコンパイルアセットとランタイムアセットを調べます。
  3. 参照アセンブリだけでなく、アプリケーションを実行するランタイムを確認します。

<LangVersion>preview</LangVersion> はコンパイラの動作を有効にします。 不足している Core メンバーを追加したり、別のパッケージ資産を選択したり、ランタイム サポートを提供したりすることはありません。

相違点の例

面積 Core 11 で利用可能
ValueTask ヘルパーと関連するオーバーロード netstandard2.1 と net10.0 で使用できますが、netstandard2.0 では使用できません。
境界を保持する Array2D.map 演算子、mapi 演算子、および copy 演算子 net10.0 ビルドでは、新しい .NET 割り当て API が使用されています。一方、.NET Standard ビルドでは、従来のフォールバックが維持されています
ランタイムに組み込まれた非同期戻り値処理機能 net10.0 ビルドで公開されます。コンパイラ、言語、参照、ランタイムの要件も適用されます。

詳細については、非同期関数とタスク関数、Array2D およびネイティブ AOT に関するページを参照してください。 通常の非同期/タスク ヘルパーと print/printn は、3 つのビルドすべてで使用できます。

F# インタラクティブと非同期的なリソースの解放

F# のタスク式は、互換性のあるコンパイル済みプロジェクトで、すでに IAsyncDisposable リソースをサポートしています。 F# 11 のパッケージ修正により、F# Interactive に最新の Core ビルドが提供されるため、use や use! などの同等のコードもそこで動作するようになります。 アプリケーションのパッケージ参照だけでなく、ツールセットを更新します。

async ランタイムは別のランタイム コントラクトです

コア ビルドの net10.0 ターゲットでは、ランタイム非同期機能のサポートが確立されません。 ランタイムの非同期実験に記載されている、コンパイラ、参照、ランタイムに関する個別の要件に従ってください。

参照