Alguns pacotes Microsoft.Extensions incluídos na estrutura compartilhada

Para reduzir o tamanho do aplicativo, simplificar as dependências do pacote e simplificar a manutenção, o .NET 11 inclui nove bibliotecas Microsoft.Extensions.* na estrutura compartilhada base. Projetos que referenciam explicitamente esses pacotes recebem aviso de build NU1510. Você pode resolver o aviso removendo o PackageReference. Se você depender de uma versão mais antiga desses pacotes, a atualização para a versão .NET 11 poderá expor alterações significativas introduzidas entre versões mais antigas e .NET 11.

Versão introduzida

.NET 11 Versão Prévia 4

Comportamento anterior

Anteriormente, as seguintes bibliotecas Microsoft.Extensions.* não eram parte da estrutura compartilhada .NET. (Você obtém o framework compartilhado usando Sdk="Microsoft.NET.Sdk", ou, de modo semelhante, referenciando qualquer um dos outros SDKs do .NET.) Os projetos que precisavam deles exigiam entradas explícitas PackageReference, e o processo de compilação copiava os conjuntos para a pasta de saída:

Novo comportamento

A partir do .NET 11, essas nove bibliotecas fazem parte da estrutura compartilhada base .NET:

  • Você não precisa de uma PackageReference para essas bibliotecas quando tem como destino net11.0 ou versão posterior.
  • Se você referenciar esses pacotes explicitamente, receberá um aviso de build NU1510.
  • Esses assemblies não são mais copiados para a pasta de saída.
  • Em casos raros, as APIs adicionais no conjunto de carga padrão podem causar conflitos de nome ou tipo. Para resolver um conflito, adicione diretivas mais explícitas using , use um alias ou use um nome de tipo totalmente qualificado.

Tipo de mudança disruptiva

Essa alteração é uma mudança comportamental.

Motivo da alteração

Incluir essas bibliotecas comumente usadas na estrutura compartilhada reduz o tamanho do aplicativo, simplifica as dependências do pacote e simplifica a manutenção.

Remova o PackageReference de qualquer pacote afetado:

Para projetos destinados apenas a net11.0 ou versões posteriores, remova PackageReference por completo:

<!-- Remove entries like these from your .csproj when targeting net11.0 only: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." />
<PackageReference Include="Microsoft.Extensions.Options" Version="..." />

Seu código continua funcionando sem modificação– as APIs agora fazem parte do runtime.

Para projetos com vários destinos (por exemplo, <TargetFrameworks>net10.0;net11.0</TargetFrameworks>), NU1510 não é gerado porque o pacote ainda é necessário para o TFM mais antigo. Nenhuma ação é necessária— o NuGet seleciona o assembly apropriado para cada estrutura de destino automaticamente. Se você quiser ser explícito, poderá incluir condicionalmente a referência:

<!-- Keep the reference only for TFMs that don't include it in the shared framework: -->
<PackageReference Include="Microsoft.Extensions.Logging.Abstractions" Version="..." Condition="'$(TargetFramework)' != 'net11.0'" />

Resolver conflitos de nome durante a compilação (raro):

Se você encontrar um erro de compilação porque um nome em seu código entra em conflito com uma das APIs recém-incluídas, use uma destas abordagens:

  • Adicione uma diretiva mais específica using .
  • Use um alias using.
  • Use um nome de tipo totalmente qualificado.

Se você depender de uma versão mais antiga desses pacotes:

Para evitar falhas em tempo de execução, como MissingMethodException ou TypeLoadException, recompile todas as bibliotecas ou binários dependentes com base nos assemblies de referência do .NET 11. Se você usar net11.0 como destino, remova o PackageReference e recompile. Se você tiver como destino TFMs anteriores ou múltiplos destinos, atualize as referências aos pacotes dos destinos que não sejam net11.0 para a versão atual e depois recompile.

As seguintes alterações significativas de versões anteriores podem surgir ao atualizar para as versões .NET 11 desses pacotes:

Microsoft. Extensions.DependencyInjection.Abstractions

Microsoft.Extensions.Logging.Abstractions

Microsoft.Extensions.Hosting.Abstractions

APIs afetadas

Nenhum.