Seu projeto não faz referência à estrutura “.NETFramework, Version = v4.6.2”. Adicione uma referência a “.NETFramework, Version = v4.6.2” em “TargetFrameworks”

112

Não consigo executar meus testes de unidade.

Tenho o próximo erro:

Seu projeto não faz referência à estrutura ".NETFramework, Version = v4.6.2". Adicione uma referência a ".NETFramework, Version = v4.6.2" na propriedade "TargetFrameworks" do seu arquivo de projeto e execute novamente a restauração do NuGet.

Em app.config:

<startup>
  <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.6.2"/>
</startup>

Em Projeto> Propriedades> Aplicativo> TargetFramework (.NET Framework 4.6.2)

Como posso corrigir isso?

Василь Ткачук
fonte

Respostas:

272

Por favor, dê os próximos passos

  1. Solução limpa
  2. Limpar pasta "pacotes"
  3. Excluir pasta "bin"
  4. Excluir pasta "obj"
Larissa Savchekoo
fonte
27
# 3 e # 4 resolveram o problema. Eu tinha um branch que era uma tarefa de atualização para o 4.7.2, mas tive que mudar para outro branch que tinha como alvo o 4.7.1. Siga estas etapas para resolver esse problema.
jjhayter
4
Tive que fazer mais uma etapa, a partir do diretório da solução: del / S project.assets.json
Jannes
Depois de fazer essa limpeza descobri que tinha outro erro no projeto que exibia o erro .Net Framework. A correção resolveu o problema.
meJustAndrew
2
stackoverflow.com/a/755433/769137 tem scripts em lote para excluí-los.
Vedran
1
Eu atualizei do 4.7.2 para o 4.8 e foi o suficiente para eu deletar as obj/pastas.
skst
30

Eu experimentei um problema semelhante, mas com v4.7.2. Ou seja, continuei recebendo mensagens de log de compilação como esta:

error : Your project does not reference ".NETFramework,Version=v4.7.2" framework. Add a reference to ".NETFramework,Version=v4.7.2" in the "TargetFrameworks" property of your project file and then re-run NuGet restore.

Apesar de parecer semelhante, nenhuma das etapas propostas acima funcionou para mim. Continuei vendo essa mensagem após cada construção. Nada parecia ser capaz de ajudar.

Na verdade, o problema estava relacionado a que, devido à migração, tive que colocar dois projetos em uma pasta de código. Um deles era voltado para .Net Core , outro para .Net Framework , ambos referenciados às mesmas bibliotecas .Net Standard. Aparentemente, eles compartilham a mesma objpasta onde os projetos principais colocam o project.assets.jsonarquivo. Na verdade, exatamente este arquivo interfere no projeto do Framework impedindo sua construção normal. Parece que até mesmo se você executou Migrate from packages.config para PackageReference ... que foi recomendado como uma das soluções possíveis.

Você pode tentar corrigir o problema colocando o seguinte snippet em seu arquivo de projeto do Framework:

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>

Funcionou imediatamente para mim, só mais tarde, quando li com atenção por que precisamos e porque funciona. Eu o encontrei inesperadamente na parte 2 de Migrando um aplicativo WPF de exemplo para o .NET Core 3 na seção Garantindo que o projeto .NET Framework ainda seja compilado . BaseOutputPathe BaseIntermediateOutputPathas variáveis ​​msbuild podem ser encontradas lá, não tenho certeza se estão bem documentadas em qualquer lugar.

moudrick
fonte
Isso resolveu meu problema. Eu nunca iria descobrir de outra forma, obrigado.
Erdogan Kurtur de
1
No VS2019 descobri que as propriedades que você mencionou precisam estar antes do OutputPath. Inicialmente, apenas os coloquei na parte inferior do csproj, sem sucesso. Esta postagem tem alguns detalhes adicionais e sugere que isso pode ser corrigido em algum ponto: github.com/dotnet/msbuild/issues/2070
John Dyer
20

Isso aconteceu comigo ao abrir um projeto VS2015 no VS2017. Excluir o project.assets.jsonda objpasta resolveu o problema.

De qualquer forma, o Framework da mensagem estava faltando no arquivo, mas eu não o adicionei lá, fui excluí-lo.

Tanuk
fonte
2
A solução mais simples de todas. Basta pesquisar o arquivo na solução e excluí-los de uma vez :)
Imad
5

Votei em Larissa, mas achei que seria útil saber como entrei nisso. Eu adicionei um arquivo de projeto padrão .net à minha construção (temos como alvo várias plataformas) e ele produziu os detritos encontrados na pasta obj. Quando a compilação de sanidade do Android surgiu, ela vomitou na pasta obj. Minha solução foi limpar essa pasta como uma etapa de pré-construção. Este é um problema difícil porque funcionou bem por anos ... agulha encontrar palheiro.

Pale Ale
fonte
2

No meu caso, exclua a .pkgrefgen/pasta sob a pasta do projeto funciona, ela contém um arquivo project.assets.json que se refere ao antigo framework .net

Yitong Feng
fonte
2
O meu era um arquivo project.assets.json na pasta obj. Excluí as pastas bin e obj e o problema foi embora.
Ceres
1

Encontrei a mesma coisa com o .net 4,71. No meu caso, simplesmente migrei de packages.config para "referências de pacote" por

Migrar de packages.config para PackageReference

... e resolveu meu problema. Para mim, eu faria isso de qualquer maneira, então se você já está indo por aqui, eu simplesmente pularia o acima e migraria para referências de pacote.

ebol2000
fonte
0

Estou usando um projeto .NET muito antigo e estava funcionando bem até parar de repente. Atualizar o Visual Studio corrigido para mim tu.

Edgar Froes
fonte