Analise suas dependências para portar código do .NET Framework para o .NET
Para identificar as dependências de terceiros sem suporte em seu projeto, você deve primeiro entender suas dependências. As dependências externas são os pacotes ou .dll
arquivos do NuGet que você faz referência em seu projeto, mas que você mesmo não cria.
A portabilidade do código para o .NET Standard 2.0 ou inferior garante que ele possa ser usado com o .NET Framework e o .NET. No entanto, se você não precisar usar a biblioteca com o .NET Framework, considere direcionar a versão mais recente do .NET.
Migrar seus pacotes NuGet para PackageReference
O .NET não pode usar o arquivo packages.config para referências do NuGet. O .NET e o .NET Framework podem usar PackageReference para especificar dependências de pacote. Se você estiver usando packages.config para especificar seus pacotes em seu projeto, converta-o para o PackageReference
formato.
Para saber como migrar, consulte o artigo Migrar de packages.config para PackageReference .
Atualize seus pacotes NuGet
Depois de migrar seu projeto para o formato, verifique se seus pacotes são compatíveis com o PackageReference
.NET.
Primeiro, atualize seus pacotes para a versão mais recente que puder. Isso pode ser feito com a interface do usuário do Gerenciador de Pacotes NuGet no Visual Studio. É provável que as versões mais recentes das dependências do pacote já sejam compatíveis com o .NET Core.
Analise as dependências do pacote
Se você ainda não verificou se suas dependências de pacote convertidas e atualizadas funcionam no .NET Core, há duas maneiras de conseguir isso:
Use nuget.org
Você pode ver os Target Framework Monikers (TFMs) que cada pacote suporta em nuget.org na seção Dependências da página do pacote.
Embora o uso do site seja um método mais fácil de verificar a compatibilidade, as informações de dependências não estão disponíveis no site para todos os pacotes.
Usar o Gerenciador de Pacotes NuGet
Um pacote NuGet é um conjunto de pastas que contêm assemblies específicos da plataforma. Verifique se há uma pasta que contém um assembly compatível dentro do pacote.
A maneira mais fácil de inspecionar pastas de pacotes NuGet é usar a ferramenta Explorador de Pacotes NuGet. Depois de instalá-lo, use as seguintes etapas para ver os nomes das pastas:
- Abra o Explorador de Pacotes NuGet.
- Clique em Abrir pacote a partir do feed online.
- Procure o nome do pacote.
- Selecione o nome do pacote nos resultados da pesquisa e clique em abrir.
- Expanda a pasta lib no lado direito e veja os nomes das pastas.
Procure uma pasta com nomes usando um dos seguintes padrões: netstandardX.Y
, netX.Y
, ou netcoreappX.Y
.
Esses valores são os Target Framework Monikers (TFMs) que mapeiam para versões do .NET Standard, .NET e .NET Core, que são compatíveis com o .NET.
Importante
Ao examinar os TFMs suportados por um pacote, observe que um TFM diferente de netstandard*
uma implementação específica do .NET, como .NET 5, .NET Core ou .NET Framework. A partir do .NET 5, o net*
TFM (sem uma designação de sistema operacional) substitui netstandard*
efetivamente como um destino portátil. Por exemplo, net5.0
tem como alvo a superfície da API do .NET 5 e é amigável entre plataformas, mas net5.0-windows
tem como alvo a superfície da API do .NET 5 conforme implementado no sistema operacional Windows.
Modo de compatibilidade do .NET Framework
Depois de analisar os pacotes NuGet, você pode descobrir que eles visam apenas o .NET Framework.
A partir do .NET Standard 2.0, o modo de compatibilidade do .NET Framework foi introduzido. Esse modo de compatibilidade permite que projetos .NET Standard e .NET Core façam referência a bibliotecas do .NET Framework. A referência a bibliotecas do .NET Framework não funciona para todos os projetos, como se a biblioteca usa APIs do Windows Presentation Foundation (WPF), mas desbloqueia muitos cenários de portabilidade.
Quando você faz referência a pacotes NuGet destinados ao .NET Framework em seu projeto, como Huitian.PowerCollections
, você recebe um aviso de fallback de pacote (NU1701) semelhante ao exemplo a seguir:
NU1701: Package ‘Huitian.PowerCollections 1.0.0’ was restored using ‘.NETFramework,Version=v4.6.1’ instead of the project target framework ‘.NETStandard,Version=v2.0’. This package may not be fully compatible with your project.
Esse aviso é exibido quando você adiciona o pacote e toda vez que compila para garantir que você teste esse pacote com seu projeto. Se seu projeto funciona conforme o esperado, você pode suprimir esse aviso editando as propriedades do pacote no Visual Studio ou editando manualmente o arquivo de projeto em seu editor de código favorito.
Para suprimir o aviso editando o arquivo de projeto, localize a PackageReference
entrada para o pacote para o qual você deseja suprimir o aviso e adicione o NoWarn
atributo. O NoWarn
atributo aceita uma lista separada por vírgulas de todos os IDs de aviso. O exemplo a seguir mostra como suprimir o NU1701
aviso para o Huitian.PowerCollections
pacote editando o arquivo de projeto manualmente:
<ItemGroup>
<PackageReference Include="Huitian.PowerCollections" Version="1.0.0" NoWarn="NU1701" />
</ItemGroup>
Para obter mais informações sobre como suprimir avisos do compilador no Visual Studio, consulte Suprimindo avisos para pacotes NuGet.
Se os pacotes NuGet não forem executados no .NET
Há algumas coisas que você pode fazer se um pacote NuGet do qual você depende não for executado no .NET Core:
- Se o projeto for de código aberto e hospedado em algum lugar como o GitHub, você pode envolver os desenvolvedores diretamente.
- Você pode entrar em contato com o autor diretamente em nuget.org. Procure o pacote e clique em Entrar em contato com proprietários no lado esquerdo da página do pacote.
- Você pode procurar outro pacote executado no .NET Core que realize a mesma tarefa que o pacote que você estava usando.
- Você pode tentar escrever o código que o pacote estava fazendo sozinho.
- Você pode eliminar a dependência do pacote alterando a funcionalidade do seu aplicativo, pelo menos até que uma versão compatível do pacote esteja disponível.
Lembre-se de que os mantenedores de projetos de código aberto e os editores de pacotes NuGet geralmente são voluntários. Eles contribuem porque se preocupam com um determinado domínio, fazem-no gratuitamente e, muitas vezes, têm um trabalho diurno diferente. Esteja ciente disso ao contatá-los para solicitar suporte ao .NET Core.
Se não conseguir resolver o problema com qualquer uma destas opções, poderá ter de fazer a portabilidade para o .NET Core numa data posterior.
A Equipe do .NET gostaria de saber quais bibliotecas são as mais importantes para oferecer suporte ao .NET Core. Você pode enviar um e-mail para dotnet@microsoft.com sobre as bibliotecas que gostaria de usar.
Analisar dependências que não sejam do NuGet
Você pode ter uma dependência que não seja um pacote NuGet, como uma DLL no sistema de arquivos. Você pode determinar a portabilidade dessa dependência com a ferramenta .NET Upgrade Assistant .