Solucionar problemas .NET Framework erros de direcionamento

              Aplica-se a: Visual Studio 2022

Este tópico descreve erros msbuild que podem ocorrer devido a problemas de referência e como você pode resolve esses erros.

Referencie um projeto ou assembly que tenha como destino uma versão diferente do .NET

Você pode criar aplicativos que fazem referência a projetos ou assemblies que visam diferentes versões do .NET. Por exemplo, você pode criar um aplicativo que tem como destino o .NET 6, mas faz referência a um assembly direcionado ao .NET Core 3.1. No entanto, você não pode definir uma referência em um projeto que visa uma versão anterior do .NET para um projeto ou assembly que tenha como destino o .NET 6. Aqui está um exemplo do erro que você pode ver neste caso:

error NU1201: Project ClassLibrary-NET6 is not compatible with netcoreapp3.1 (.NETCoreApp,Version=v3.1). Project ClassLibrary-NET6 supports: net6.0 (.NETCoreApp,Version=v6.0)
2>Done building project "ClassLibrary-NET31.csproj" -- FAILED.

Para resolve o erro, verifique se o aplicativo tem como destino uma versão do .NET compatível com a versão direcionada pelos projetos ou assemblies que o aplicativo faz referência.

Redirecionar um projeto para uma versão diferente do .NET

Se você alterar a versão de destino do .NET para seu aplicativo, o Visual Studio alterará algumas das referências, mas talvez seja necessário atualizar algumas referências manualmente. Por exemplo, um dos erros mencionados anteriormente pode ocorrer se você alterar um aplicativo para atingir o .NET Core 3.1 e esse aplicativo tiver referências, recursos ou configurações que dependem do .NET 6.

Captura de tela que mostra a alteração da estrutura de destino no Visual Studio.

Atualizar referências no app.config

Para contornar as configurações do aplicativo em aplicativos .NET Framework, siga estas etapas:

  1. Abra Gerenciador de Soluções.
  2. Selecione Mostrar Todos os Arquivos e edite o arquivo app.config no editor XML do Visual Studio.
  3. Altere a versão nas configurações para corresponder à versão apropriada do .NET. Por exemplo, você pode alterar a configuração da versão de 4.0.0.0 para 2.0.0.0.

Da mesma forma, para um aplicativo que adicionou recursos, siga estas etapas:

  1. Abra Gerenciador de Soluções.
  2. Selecione Mostrar Todos os Arquivos.
  3. Expanda Meu Projeto (Visual Basic) ou Propriedades (C#) e edite o arquivo Resources.resx no editor XML do Visual Studio.
  4. Altere a configuração da versão de 4.0.0.0 para 2.0.0.0.

Atualizar recursos

Se seu aplicativo tiver recursos como ícones ou bitmaps ou configurações como cadeias de conexão de dados, você também poderá resolve o erro removendo todos os itens na página Configurações do Project Designer e, em seguida, ler as configurações necessárias.

Você redireciona um projeto para uma versão diferente do .NET e as referências não são resolvidas

Se você redirecionar um projeto para uma versão diferente do .NET, suas referências podem não resolve corretamente em alguns casos. Referências explícitas totalmente qualificadas para assemblies geralmente causam esse problema, mas você pode resolve-lo removendo as referências que não resolve e, em seguida, adicionando-as de volta ao projeto. Como alternativa, você pode editar o arquivo de projeto para substituir as referências. Primeiro, remova as referências do seguinte formulário:

<Reference Include="System.ServiceModel, Version=3.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089, processorArchitecture=MSIL" />

Em seguida, substitua-os pelo formulário simples:

<Reference Include="System.ServiceModel" />

Observação

Depois de fechar e reabrir seu projeto, você também deve recompilá-lo para garantir que todas as referências resolve corretamente.

Referências