Frameworks de destino do FSharp.Core

Uma biblioteca não pode usar diretamente APIs indisponíveis no alvo de compilação. O FSharp.Core 11 adiciona uma build net10.0 ao lado de netstandard2.0 e netstandard2.1, portanto, pode usar APIs modernas do .NET sem descartar destinos mais antigos.

Comportamento e APIs específicas de destino

Os builds podem expor apis e implementações diferentes. A decisão de direcionamento seleciona o alvo moderno explicitamente; ele não segue automaticamente o alvo de desenvolvimento do compilador.

Qual compilação o seu projeto usa

O NuGet seleciona o ativo compatível mais próximo para cada destino do projeto. Projetos do .NET 10 e posteriores podem selecionar lib/net10.0/FSharp.Core.dll; destinos compatíveis anteriores selecionam um ativo do .NET Standard.

Para diagnosticar a disponibilidade:

  1. Verifique a versão do pacote FSharp.Core resolvida.
  2. Inspecione os ativos de compilação e runtime selecionados em obj/project.assets.json.
  3. Verifique o runtime que executa o aplicativo, não apenas seus assemblies de referência.

<LangVersion>preview</LangVersion> permite o comportamento do compilador. Ele não adiciona membros Core ausentes, não seleciona um ativo de pacote diferente nem fornece suporte em tempo de execução.

Exemplos das diferenças

Area Disponibilidade no Core 11
Auxiliares do ValueTask e sobrecargas relacionadas Disponível em netstandard2.1 e net10.0, não netstandard2.0.
Preservação de limites Array2D.map, mapi e copy O net10.0 build usa uma API de alocação do .NET mais recente; os builds .NET Standard mantêm seu fallback.
Intrínsecos de retorno assíncrono de Runtime-async Exposto pelo net10.0 build; os requisitos de compilador, idioma, referência e runtime também se aplicam.

Para obter detalhes, consulte Async e as funções de tarefa e Array2D e Native AOT. Auxiliares assíncronos/tarefas comuns e print/printn estão disponíveis em todos os três builds.

Descarte interativo e assíncrono do F#

Expressões de tarefa F# já dão suporte IAsyncDisposable a recursos em projetos compilados compatíveis. A correção de empacotamento F# 11 fornece o build do Core moderno para o F# Interactive, de modo que o código equivalente use e use! também funciona lá. Atualize o conjunto de ferramentas, não apenas a referência de pacote de um aplicativo.

Runtime assíncrono é um contrato de runtime separado

O alvo do build Core net10.0 não estabelece suporte assíncrono de runtime. Siga os requisitos separados de compilador, referência e runtime em Experimentos assíncronos de runtime.

Consulte também