Frameworks cibles FSharp.Core

Une bibliothèque ne peut pas utiliser directement les API absentes de sa cible de compilation. FSharp.Core 11 ajoute une build net10.0 aux côtés de netstandard2.0 et netstandard2.1 afin de pouvoir utiliser des API .NET modernes sans abandonner la prise en charge des anciennes cibles.

API et comportement spécifiques à la cible

Les builds peuvent exposer différentes API et implémentations. La décision de ciblage sélectionne explicitement la cible moderne ; elle ne suit pas automatiquement la cible de développement du compilateur.

Quel build votre projet utilise

NuGet sélectionne le composant compatible le plus proche pour chaque cible de projet. Les projets .NET 10 et versions ultérieures peuvent sélectionner lib/net10.0/FSharp.Core.dll ; les anciennes cibles compatibles sélectionnent une ressource .NET Standard.

Pour diagnostiquer la disponibilité :

  1. Vérifiez la version résolue du package FSharp.Core.
  2. Inspectez les ressources de compilation et d’exécution sélectionnées dans obj/project.assets.json.
  3. Vérifiez le runtime qui exécute l’application, et non seulement ses assemblys de référence.

<LangVersion>preview</LangVersion> permet le comportement du compilateur. Il n’ajoute pas de membres Core manquants, ne sélectionne pas une ressource de package différente et ne fournit pas une prise en charge du runtime.

Exemples de différences

Area Disponibilité dans Core 11
Helpers ValueTask et surcharges associées Disponible dans netstandard2.1 et net10.0, non netstandard2.0.
Préservation des limites Array2D.map, mapi et copy Cette build net10.0 utilise une API d’allocation .NET plus récente ; les builds .NET Standard conservent leur solution de repli.
intrinsics de retour runtime asynchrones Exposé par la net10.0 compilation ; les exigences du compilateur, du langage, de la référence et du runtime s’appliquent également.

Pour plus d’informations, consultez fonctions Async et de tâche et Array2D et AOT natif. Les helpers Async/Task ordinaires et print/printn sont disponibles dans les trois builds.

F# interactif et libération asynchrone

Les expressions de tâche F# prennent déjà en charge les ressources IAsyncDisposable dans les projets compilés compatibles. Le correctif d’empaquetage F# 11 fournit la version moderne de Core à F# Interactive de sorte que le code use et use! équivalent fonctionne également là-bas. Mettez à jour l’ensemble d’outils, et non seulement la référence de package d’une application.

Le runtime async est un contrat d’exécution distinct

La cible de la build Core net10.0 ne prend pas en charge le support runtime-async. Suivez les exigences distinctes du compilateur, de référence et d’exécution dans Runtime async experiments.

Voir aussi