Plataformas de destino de FSharp.Core

Una biblioteca no puede usar directamente las API no disponibles en su destino de compilación. FSharp.Core 11 agrega una compilación net10.0 junto a netstandard2.0 y netstandard2.1, por tanto, puede usar API modernas de .NET sin dejar de admitir destinos anteriores.

API y comportamiento específicos del destino

Las compilaciones pueden exponer diferentes API e implementaciones. La decisión de segmentación de destino selecciona explícitamente el destino moderno; no sigue automáticamente la plataforma de desarrollo del compilador.

¿Qué compilación usa tu proyecto?

NuGet selecciona el recurso compatible más cercano para cada objetivo del proyecto. Los proyectos de .NET 10 y versiones posteriores pueden seleccionar lib/net10.0/FSharp.Core.dll; los destinos compatibles más antiguos seleccionan un recurso de .NET Standard.

Para diagnosticar la disponibilidad:

  1. Compruebe la versión del paquete FSharp.Core resuelta.
  2. Inspeccione los recursos de compilación y tiempo de ejecución seleccionados en obj/project.assets.json.
  3. Compruebe el entorno de ejecución que ejecuta la aplicación, no solo sus ensamblados de referencia.

Esto <LangVersion>preview</LangVersion> habilita el comportamiento del compilador. No agrega miembros de Core que faltan, selecciona un recurso de paquete diferente o proporciona soporte en tiempo de ejecución.

Ejemplos de diferencias

Area Disponibilidad en Core 11
Asistentes de ValueTask y sobrecargas relacionadas Disponible en netstandard2.1 y net10.0, no netstandard2.0.
Array2D.map, mapi y copy que preservan los límites La net10.0 compilación usa una API de asignación de .NET más reciente; las compilaciones de .NET Standard conservan su mecanismo alternativo.
Intrínsecos de retorno runtime-async Expuesto por la net10.0 compilación; También se aplican los requisitos del compilador, el lenguaje, la referencia y el entorno de ejecución .

Para obtener más información, consulte Funciones asincrónicas y de tareas y Array2D y AOT nativo. Los asistentes normales de Async/Task y print/printn están disponibles en las tres compilaciones.

F# Interactive y liberación asincrónica

Las expresiones de tarea de F# ya admiten IAsyncDisposable recursos en proyectos compilados compatibles. La corrección de empaquetado de F# 11 proporciona la compilación Core moderna a F# Interactive, por lo que el use! y use código equivalentes también funcionen allí. Actualice el conjunto de herramientas, no solo la referencia de paquete de una aplicación.

La asincronía en tiempo de ejecución es un contrato en tiempo de ejecución independiente

El destino de la compilación Core net10.0 no establece compatibilidad async en tiempo de ejecución. Siga los requisitos del compilador, la referencia y el entorno de ejecución independientes en experimentos asincrónicos del entorno de ejecución.

Consulte también