Framework di destinazione FSharp.Core

Una libreria non può usare direttamente le API assenti dalla destinazione di compilazione. FSharp.Core 11 aggiunge una build insieme a netstandard2.0 e netstandard2.1 quindi può usare API moderne .NET senza eliminare le destinazioni meno recenti.

API e comportamento specifici della destinazione

Le compilazioni possono esporre DIVERSE API e implementazioni. La decisione di targeting seleziona in modo esplicito la destinazione moderna; non segue automaticamente la destinazione di sviluppo del compilatore.

Quale build usa il progetto

NuGet seleziona l'asset compatibile più vicino per ogni framework di destinazione del progetto. .NET 10 e versioni successive possono selezionare lib/net10.0/FSharp.Core.dll; le destinazioni compatibili meno recenti selezionano un asset .NET Standard.

Per eseguire la diagnosi della disponibilità:

  1. Controllare la versione del pacchetto FSharp.Core risolta.
  2. Esaminare gli asset di compilazione e di runtime selezionati in obj/project.assets.json.
  3. Controllare il runtime che esegue l'applicazione, non solo gli assembly di riferimento.

<LangVersion>preview</LangVersion> abilita il comportamento del compilatore. Non aggiunge membri Core mancanti, non seleziona un asset del pacchetto diverso e non fornisce supporto di runtime.

Esempi delle differenze

Area Disponibilità in Core 11
Helper di ValueTask e overload correlati Disponibile in netstandard2.1 e net10.0, non netstandard2.0.
Array2D.map, mapi e copy che preservano i limiti La net10.0 compilazione usa un'API di allocazione .NET più recente; le compilazioni .NET Standard mantengono il fallback.
Intrinseci di restituzione del runtime async Esposto dalla net10.0 compilazione; si applicano anche i requisiti del compilatore, del linguaggio, del riferimento e del runtime .

Per informazioni dettagliate, vedere Funzioni asincrone e task e Array2D e AOT nativo. Gli helper Async/Task ordinari e print/printn sono disponibili in tutte e tre le compilazioni.

F# Interactive e rilascio asincrono

Le espressioni di task F# supportano già IAsyncDisposable nei progetti compilati compatibili. La correzione per la creazione di pacchetti F# 11 fornisce la build core moderna a F# Interactive in modo che anche il codice equivalente use e use! funzioni lì. Aggiornare il set di strumenti, non solo il riferimento al pacchetto di un'applicazione.

Runtime async è un contratto di runtime separato

Il target della build Core net10.0 non abilita il supporto runtime-async. Seguire i requisiti separati del compilatore, dei riferimenti e del runtime negli esperimenti asincroni di runtime.

Vedere anche