ライブラリでは、コンパイル ターゲットに存在しない 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.0とnetstandard2.1で使用でき、net10.0ではありません。 |
境界を保持する Array2D.map 演算子、mapi 演算子、および copy 演算子 |
net10.0 ビルドでは、新しい .NET 割り当て API が使用されます。.NET Standard ビルドはフォールバックを維持します。 |
| ランタイム非同期の戻り値イントリンシクス |
net10.0 ビルドで提供される場合、コンパイラ、言語、参照、およびランタイムの要件も適用されます。 |
詳細については、非同期関数とタスク関数、Array2D およびネイティブ AOT に関するページを参照してください。 通常の非同期/タスク ヘルパーと print/printn は、3 つのビルドすべてで使用できます。
F# インタラクティブおよび非同期破棄
F# タスク式では、互換性のあるコンパイル済みプロジェクトで IAsyncDisposable リソースを既にサポートしています。
F# 11 パッケージ修正プログラムは、最新の Core ビルドを F# Interactive に提供し、その結果、同等のuseおよびuse!コードもそこで動作するようにします。 アプリケーションのパッケージ参照だけでなく、ツールセットを更新します。
async ランタイムは別のランタイム コントラクトです
コア ビルドの net10.0 ターゲットでは、ランタイム非同期サポートが確立されません。
ランタイム非同期実験の個別のコンパイラ、リファレンス、およびランタイム要件に従います。
参照
.NET