FSharp.Core-målplattformar

Ett bibliotek kan inte direkt använda API:er som saknas i kompileringsmålet. FSharp.Core 11 lägger till en net10.0 build bredvid netstandard2.0 och netstandard2.1 så att det kan använda moderna .NET API:er utan att släppa äldre mål.

Målspecifika API:er och beteende

Byggena kan exponera olika API:er och implementeringar. Beslutet om målval väljer uttryckligen det moderna målet; det följer inte automatiskt kompilatorns utvecklingsmål.

Vilken build ditt projekt använder

NuGet väljer den närmaste kompatibla resursen för varje projektmål. .NET 10 och senare projekt kan välja lib/net10.0/FSharp.Core.dll; äldre kompatibla mål väljer en .NET Standard-resurs.

Så här diagnostiserar du tillgängligheten:

  1. Kontrollera den lösta FSharp.Core-paketversionen.
  2. Granska de valda kompilerings- och körningsresurserna i obj/project.assets.json.
  3. Kontrollera körmiljön som kör programmet, inte bara dess referensassemblies.

<LangVersion>preview</LangVersion> möjliggör kompilatorbeteende. Den lägger inte till saknade Core-medlemmar, väljer en annan paketresurs eller ger stöd för körning.

Exempel på skillnader

Area Tillgänglighet i Core 11
ValueTask-hjälpmetoder och relaterade överlagrade metoder Tillgänglig i netstandard2.1 och net10.0, inte netstandard2.0.
gränsbevarande Array2D.map, mapi och copy Bygget net10.0 använder ett nyare .NET-allokerings-API; .NET Standard-versioner behåller sin reservlösning.
Runtime-async-returintrinsiker Exponeras av bygget net10.0; krav för kompilator, språk, referens och körning gäller också.

Mer information finns i Async och taskfunktioner och Array2D och Native AOT. Vanliga Async-/Task-hjälpare och print/printn är tillgängliga i alla tre versionerna.

F# Interactive och asynkron frigöring

F# task-uttryck stöder redan IAsyncDisposable-resurser i kompatibla kompilerade projekt. Korrigeringen av paketeringen i F# 11 levererar den moderna Core-versionen till F# Interactive så att motsvarande use och use! kod också fungerar där. Uppdatera verktygsuppsättningen, inte bara ett programs paketreferens.

Runtime async är ett separat runtime-kontrakt

Core-versionens net10.0 target etablerar inte stöd för runtime-async. Följ de separata kraven för kompilator, referenser och körning i asynkrona experiment för körning.

Se även