ライブラリでは、コンパイル ターゲットに存在しない 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 アセットが選択されます。
可用性を診断するには:
- 解決された FSharp.Core パッケージのバージョンを確認します。
-
obj/project.assets.jsonで選択したコンパイルアセットとランタイムアセットを調べます。 - 参照アセンブリだけでなく、アプリケーションを実行するランタイムを確認します。
<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 ターゲットでは、ランタイム非同期機能のサポートが確立されません。
ランタイムの非同期実験に記載されている、コンパイラ、参照、ランタイムに関する個別の要件に従ってください。
参照
.NET