Marcos de destino de FSharp.Core

Una biblioteca no puede usar directamente las API que no están presentes en su destino de compilación. FSharp.Core 11 agrega una compilación para net10.0, junto a las compilaciones para netstandard2.0 y netstandard2.1, lo que le permite utilizar las API modernas de .NET sin dejar de admitir versiones anteriores de las plataformas de destino.

API y comportamiento específicos del destino

Las compilaciones pueden exponer diferentes API e implementaciones. La decisión sobre el marco de destino selecciona explícitamente el marco de destino moderno, en lugar de adoptar automáticamente el marco de destino de desarrollo del compilador.

Qué compilación utiliza su proyecto

NuGet selecciona el recurso compatible más próximo para cada marco de destino del proyecto. Los proyectos de .NET 10 y versiones posteriores pueden seleccionar lib/net10.0/FSharp.Core.dll; los marcos de destino anteriores compatibles 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.

<LangVersion>preview</LangVersion> habilita el comportamiento del compilador. No agrega miembros de Core que falten, no selecciona un recurso de paquete diferente ni proporciona compatibilidad 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 asíncrono en tiempo de ejecución 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 eliminación asincrónica

Las expresiones de tarea de F# ya admiten IAsyncDisposable recursos en proyectos compilados compatibles. La corrección del empaquetado de F# 11 proporciona la compilación moderna de Core a F# Interactive para que el código use y use! equivalente también funcione en ese entorno. Actualice el conjunto de herramientas, no solo la referencia de paquete de una aplicación.

La ejecución asincrónica en tiempo de ejecución constituye un contrato independiente del entorno de ejecución

El marco de destino net10.0 de la compilación de Core no garantiza la compatibilidad con la ejecución asincrónica en tiempo de ejecución. Siga los requisitos específicos del compilador, las referencias y el entorno de ejecución que se describen en Experimentos de ejecución asincrónica en tiempo de ejecución.

Consulte también