Partilhar via


Solução de problemas de erros de definição de destino do .NET Framework

Aplica-se a: Visual Studio

Este tópico descreve os erros do MSBuild que podem ocorrer devido a problemas de referência e como você pode resolver esses erros.

Referenciar um projeto ou um assembly direcionado a outra versão do .NET

É possível criar aplicativos que fazem referência a projetos ou a assemblies direcionados a versões diferentes do .NET. Por exemplo, é possível criar um aplicativo que tem como destino o .NET 6, mas que faz referência a um assembly que tem como destino o .NET Core 3.1. No entanto, você não pode definir uma referência em um projeto direcionado a uma versão anterior do .NET para um projeto ou assembly direcionado ao .NET 6. Eis 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 resolver o erro, certifique-se de que seu aplicativo seja direcionado a uma versão do .NET compatível com a versão que seja o destino dos projetos ou assemblies referenciados pelo seu aplicativo.

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 altera algumas das referências, mas talvez você precise atualizar algumas referências manualmente. Por exemplo, um dos erros mencionados anteriormente poderá ocorrer se você alterar um aplicativo para direcionar o .NET Core 3.1 e esse aplicativo tenha referências, recursos ou configurações que se baseiam no .NET 6.

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

Atualizar referências em app.config

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

  1. Abra o 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 que coincida com a versão apropriada do .NET. Por exemplo, você pode alterar a configuração de 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 o 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 de versão de 4.0.0.0 para 2.0.0.0.

Atualizar recursos

Se o aplicativo tiver recursos como ícones ou bitmaps ou configurações como cadeias de conexão de dados, você também poderá resolver o erro removendo todos os itens na página Configurações do Designer de Projeto e adicionando novamente 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 poderão não ser resolvidas corretamente em alguns casos. Referências explícitas totalmente qualificadas a assemblies geralmente causam esse problema, mas você pode resolvê-lo removendo as referências que não resolvem e adicionando-as novamente ao projeto. Como alternativa, você pode editar o arquivo de projeto para substituir as referências. Primeiro, remova as referências da seguinte forma:

<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 o projeto, você também deve recompilá-lo para garantir que todas as referências resolver corretamente.

Referências