az FSharp.Core célkeretrendszerei

Egy tár nem használhatja közvetlenül a fordítási célból hiányzó API-kat. Az FSharp.Core 11 egy buildet is netstandard2.0 hozzáadnet10.0, így netstandard2.1 modern .NET API-kat használhat a régebbi célok elvetése nélkül.

Célspecifikus API-k és viselkedés

A buildek különböző API-kat és implementációkat tehetnek elérhetővé. A célzási döntés explicit módon választja ki a modern célt; nem követi automatikusan a fordító fejlesztési célját.

Melyik buildet használja a projekt?

A NuGet minden projektcélhoz a legközelebbi kompatibilis eszközt választja ki. A .NET 10-es és újabb projektek a lib/net10.0/FSharp.Core.dll elemet választhatják; a régebbi kompatibilis célok egy .NET Standard objektumot választanak.

A rendelkezésre állás diagnosztizálása:

  1. Ellenőrizze a feloldott FSharp.Core-csomag verzióját.
  2. Vizsgálja meg a kijelölt buildelési és futtatókörnyezeti objektumokat itt: obj/project.assets.json
  3. Ellenőrizze az alkalmazást végrehajtó futtatókörnyezetet, nem csak a referenciaszerelvényeket.

A(z) <LangVersion>preview</LangVersion> lehetővé teszi a fordító működését. Nem ad hozzá hiányzó Core-tagokat, nem választ ki másik csomageszközt, és nem biztosít futtatókörnyezeti támogatást.

Példák a különbségekre

Area Rendelkezésre állás a Core 11-ben
ValueTask segítők és kapcsolódó túlterhelt változatok Elérhető a(z) netstandard2.1 és net10.0 esetén, de nem a(z) netstandard2.0 esetén.
Határokat megőrző Array2D.map, mapi, és copy A net10.0 build egy újabb .NET memóriakiosztási API-t használ; a .NET Standard buildek megtartják a tartalék megoldásukat.
Runtime-async visszatérési beépített függvények A build által net10.0 meghatározott; fordítóra, nyelvre, referenciára és futtatókörnyezetre vonatkozó követelmények szintén érvényesek.

További információkért lásd: Async és task functions és Array2D and Native AOT. A szokásos Async/Task segédfüggvények és a print/printn mindhárom buildben elérhetők.

F# Interaktív és aszinkron ártalmatlanítás

Az F#-feladatkifejezések már támogatják IAsyncDisposable a kompatibilis lefordított projektek erőforrásait. Az F# 11 csomagolási javítás biztosítja a modern Core-buildet az F# Interactive számára, így az egyenértékű use és use! kód is működik ott. Ne csak az alkalmazás csomaghivatkozását, hanem az eszközkészletet is frissítse.

A Runtime async egy külön futtatókörnyezeti kontraktus

A Core build net10.0 cél nem biztosít futásidejű aszinkron támogatást. Kövesse a Futásidejű aszinkron kísérletek részben szereplő különálló fordítói, referencia- és futásidejű követelményeket.

Lásd még