Platformy docelowe FSharp.Core

Biblioteka nie może bezpośrednio korzystać z interfejsów API nieobecnych w docelowym celu kompilacji. Język FSharp.Core 11 dodaje kompilację net10.0 obok netstandard2.0 i netstandard2.1, dzięki czemu może korzystać z nowoczesnych interfejsów API .NET bez porzucania starszych platform docelowych.

Interfejsy API specyficzne dla platformy docelowej i zachowanie

Kompilacje mogą uwidaczniać różne interfejsy API i implementacje. Decyzja targetowania jawnie wybiera nowoczesny cel docelowy; nie jest automatycznie ustalana zgodnie z celem programistycznym kompilatora.

Której kompilacji używa projekt

NuGet wybiera najbliższy zgodny zasób dla każdego elementu docelowego projektu. Projekty .NET 10 i nowsze mogą wybrać lib/net10.0/FSharp.Core.dll; starsze zgodne platformy docelowe wybierają zasób dla platformy .NET Standard.

Aby zdiagnozować dostępność:

  1. Sprawdź ustaloną wersję pakietu FSharp.Core.
  2. Sprawdź wybrane zasoby kompilowania i środowiska uruchomieniowego w programie obj/project.assets.json.
  3. Sprawdź środowisko uruchomieniowe, w którym działa aplikacja, nie tylko jej zestawy referencyjne.

<LangVersion>preview</LangVersion> włącza działanie kompilatora. Nie dodaje brakujących składników Core, nie wybiera innego zasobu pakietu ani nie zapewnia obsługi środowiska uruchomieniowego.

Przykłady różnic

Area Dostępność w Core 11
Metody pomocnicze ValueTask i powiązane przeciążenia Dostępne w systemach netstandard2.1 i net10.0, a nie netstandard2.0.
Z zachowaniem granic Array2D.map, mapi i copy Kompilacja net10.0 używa nowszego interfejsu API alokacji .NET; kompilacje .NET Standard zachowują mechanizm awaryjny.
Funkcje wewnętrzne asynchronicznego zwrotu środowiska uruchomieniowego Udostępniane przez kompilację net10.0; Obowiązują również wymagania kompilatora, języka, referencji i środowiska uruchomieniowego.

Aby uzyskać szczegółowe informacje, zobacz Funkcje asynchroniczne i zadania oraz Array2D i Native AOT. Zwykłe pomocniki asynchroniczne/zadania i print/printn są dostępne we wszystkich trzech kompilacjach.

F# Interactive i asynchroniczne usuwanie

Wyrażenia zadań języka F# już obsługują zasoby IAsyncDisposable w zgodnych skompilowanych projektach. Poprawka pakietowania F# 11 udostępnia nowoczesną kompilację Core dla F# Interactive, więc równoważny kod use i use! również tam działa. Zaktualizuj zestaw narzędzi, a nie tylko odwołanie do pakietu aplikacji.

Asynchroniczne środowisko uruchomieniowe to odrębny kontrakt środowiska uruchomieniowego

Obiekt docelowy kompilacji net10.0 Core nie ustanawia obsługi asynchronicznego wykonywania w środowisku uruchomieniowym. Postępuj zgodnie z oddzielnymi wymaganiami kompilatora, referencji i środowiska uruchomieniowego w Asynchronicznych eksperymentach środowiska uruchomieniowego.

Informacje dodatkowe