Kerangka kerja target FSharp.Core

Pustaka tidak dapat langsung menggunakan API yang tidak tersedia pada target kompilasinya. FSharp.Core 11 menambahkan net10.0 build bersama netstandard2.0 dan netstandard2.1 sehingga dapat menggunakan API .NET modern tanpa menghilangkan target yang lebih lama.

API dan perilaku khusus target

Build-build dapat mengekspos API dan implementasi yang berbeda. keputusan penentuan target memilih target modern secara eksplisit; hal ini tidak secara otomatis mengikuti target pengembangan kompilator.

Build yang digunakan proyek Anda

NuGet memilih aset terdekat yang kompatibel untuk setiap target proyek. .NET 10 dan yang lebih baru dapat memilih lib/net10.0/FSharp.Core.dll; target kompatibel yang lebih lama memilih aset standar .NET.

Untuk mendiagnosis ketersediaan:

  1. Periksa versi paket FSharp.Core yang ditetapkan.
  2. Periksa kompilasi dan aset runtime yang dipilih di obj/project.assets.json.
  3. Periksa runtime yang menjalankan aplikasi, tidak hanya assembly referensi.

<LangVersion>preview</LangVersion> mengaktifkan perilaku pengkompilasi. Ini tidak menambahkan anggota Core yang hilang, tidak memilih aset paket yang berbeda, atau memberikan dukungan runtime.

Contoh perbedaan

Wilayah Ketersediaan di Core 11
Pembantu ValueTask dan overload terkait Tersedia di netstandard2.1 dan net10.0, bukan netstandard2.0.
Bounds-preserving Array2D.map, mapi, dan copy Build net10.0 ini menggunakan API alokasi .NET yang lebih baru; build .NET Standard mempertahankan fallback mereka.
Intrinsik return runtime-asinkron Diekspos oleh net10.0 build; persyaratan kompilator, bahasa, referensi, dan runtime juga berlaku.

Untuk detailnya, lihat fungsi async dan task serta Array2D dan Native AOT. Pembantu Asinkron/Tugas biasa dan print/printn tersedia di ketiga build.

F# interaktif dan pelepasan asinkron

Ekspresi tugas F# sudah mendukung IAsyncDisposable resources dalam proyek yang dikompilasi yang kompatibel. Perbaikan paket F# 11 memasok build Core modern ke F# Interactive sehingga kode use dan use! yang setara juga berfungsi di sana. Perbarui toolset, tidak hanya referensi paket suatu aplikasi.

Asinkron runtime adalah kontrak runtime terpisah

Target build net10.0 Core tidak menetapkan dukungan runtime-async. Ikuti persyaratan kompilator, referensi, dan runtime terpisah dalam eksperimen asinkron Runtime.

Baca juga