Frameworks de destino do FSharp.Core

Uma biblioteca não pode usar diretamente APIs não disponíveis no seu destino de compilação. O FSharp.Core 11 adiciona uma net10.0 compilação juntamente com netstandard2.0 e netstandard2.1, podendo assim usar APIs .NET modernas sem eliminar alvos mais antigos.

APIs e comportamento específicos do alvo

As compilações podem expor diferentes APIs e implementações. A decisão de definição do destino seleciona explicitamente o destino moderno; não segue automaticamente o destino de compilação do compilador.

Que build é utilizada pelo teu projeto

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

Para diagnosticar a disponibilidade:

  1. Verifique a versão resolvida do pacote FSharp.Core.
  2. Inspecione os ativos selecionados de compilação e runtime em obj/project.assets.json.
  3. Verifique o runtime utilizado para executar a aplicação, não apenas as suas assembleias de referência.

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

Exemplos das diferenças

Area Disponibilidade no Core 11
Helpers do ValueTask e sobrecargas relacionadas Disponível em netstandard2.1 e net10.0, não netstandard2.0.
Que preserva os limites Array2D.map, mapi e copy A compilação net10.0 utiliza uma API de alocação .NET mais recente; as compilações .NET Standard mantêm a sua alternativa.
intrinsics de retorno assíncrono em tempo de execução Exigidos pela net10.0 compilação; requisitos de compilador, linguagem, referência e de runtime também se aplicam.

Para mais detalhes, veja Assíncrono e funções de tarefa e Array2D e AOT nativo. Helpers Async/Task comuns e print/printn estão disponíveis em todas as três versões.

F# Interativo e libertação assíncrona

As expressões de tarefas F# já suportam recursos IAsyncDisposable em projetos compilados compatíveis. A correção de empacotamento do F# 11 fornece a versão moderna do Core para o F# Interactive, por isso o código equivalente use e use! também funciona aí. Atualize o conjunto de ferramentas, não apenas a referência do pacote da aplicação.

O runtime assíncrono é um contrato de execução separado

O alvo da versão Core net10.0 não estabelece suporte assíncrono em tempo de execução. Siga os requisitos separados de compilador, referência e tempo de execução nas experiências assíncronas do Runtime.

Ver também