Os assemblies de referência para o framework “.NETFramework, Version = v4.6.2” não foram encontrados

112

Ao tentar compilar uma solução, recebo o seguinte erro de compilação:

Erro MSB3644 Os assemblies de referência para a estrutura ".NETFramework, Version = v4.6.2" não foram encontrados. Para resolver isso, instale o SDK ou Targeting Pack para esta versão da estrutura ou redirecione seu aplicativo para uma versão da estrutura para a qual você tem o SDK ou Targeting Pack instalado. Observe que os assemblies serão resolvidos no Global Assembly Cache (GAC) e serão usados ​​no lugar dos assemblies de referência. Portanto, sua montagem pode não ser direcionada corretamente para a estrutura que você pretende. C: \ RPR \ Dev \ Libraries \ Common \ Common.csproj C: \ Arquivos de programas (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets 1111

Eu tentei instalar o SDK do .NET Framework 4.6.2, bem como o 4.6 Targeting Pack, porém ambos erram porque eu já tenho instalado. Eu também tentei instalar o Visual Studio 2017, mas ainda dá o mesmo erro.

Alguma ideia?

Justin
fonte
4
Eu vi esse problema desaparecer quando você instalou o pacote de desenvolvedor 4.5.2 (ou seja, não o 4.6.2, mas o pacote de desenvolvedor 4.5.2).
Peter Ritchie de
Eu tive esse problema com o 4.8, por algum motivo meus arquivos csproj tinham 4.8.0dentro, que não é o mesmo que 4.8aparentemente.
Jacek Gorgoń
Para a verdadeira resposta, consulte stackoverflow.com/a/58850755/155077
Stefan Steiger

Respostas:

96

Acontece que instalei o .NET Framework v4.6.2, não o Developer Pack para 4.6.2. Doh!

https://www.microsoft.com/en-us/download/details.aspx?id=53321

Justin
fonte
Instalei o Dev Pack 462 e ainda recebo o aviso. Tenho que reiniciar minha máquina?
Jim
5
Tive que reiniciar o Visual Studio após a instalação, então tudo bem
Jonesopolis
67

Windows -> Pesquisar -> Instalador do Visual Studio -> Modificar -> Componentes Individuais e verifique a versão correta

Cata Hotea
fonte
9
Esta é uma solução limpa, pois o Visual Studio listará todas as versões para você e mostrará o que você instalou atualmente e gerenciará o download / instalação.
olive_tree
1
Tentei todas as soluções acima e nenhuma funcionou. Este fez o trabalho. Obrigado
Charlie Seligman
O meu está pedindo a v4.6.1 (assemblies de referência) e mostra a v4.6.1 (ferramentas de desenvolvimento) instalada através do instalador ... ainda tentando descobrir o que está acontecendo. CANCELAR: Meu problema é que nenhum framework .NET foi instalado por padrão. Obrigado.
Xonatron
1
Esta deveria ser a melhor resposta!
Tomáš Hübelbauer
Esta é a melhor resposta!
Himechi90 de
12

Eu estava recebendo exatamente o mesmo erro ao compilar, exceto que era para ".NETFramework, Version = v4.7.1".

Baixei o pacote de desenvolvedor para 4.7.1 aqui: https://www.microsoft.com/en-us/download/confirmation.aspx?id=56119

O pacote instalou esses programas na máquina de destino (meu servidor de compilação).

  • SDK do Microsoft .NET Framework 4.7.1
  • Pacote de segmentação Microsoft .NET Framework 4.7.1
  • Pacote de segmentação Microsoft .NET Framework 4.7.1 (ENU)

Quando tentei construir novamente, não recebi mais o erro e a construção foi bem-sucedida.

Jamie Butterworth
fonte
1
Problema semelhante (erro de compilação do servidor). Tinha o mesmo erro, mas para 4.7.1 e isso resolveu para mim.
Brendan
Idem para 4.7.2.
LosManos
12

A partir de maio de 2019 você pode construir seu projeto em net20 até net48 (incluindo ne461) qualquer máquina com pelo menos MSBuild ou .NET Core SDK instalado sem a necessidade de Developer Pack instalado.

Se o .NET Core SDK estiver instalado em sua máquina, adicione o pacote nuget Microsoft.NETFramework.ReferenceAssemblies ao seu projeto

    <ItemGroup>
        <PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.0-preview.2">
            <IncludeAssets>runtime; build; native; contentfiles; analyzers</IncludeAssets>
            <PrivateAssets>all</PrivateAssets>
        </PackageReference>     
    </ItemGroup>

O pacote inclui todos os ReferenceAssemblies começando com net20 até net48

Esses pacotes permitem a construção de projetos .NET Framework em qualquer máquina com pelo menos MSBuild ou .NET Core SDK instalado, além de outros cenários.

Para mais detalhes: https://github.com/Microsoft/dotnet/tree/master/releases/reference-assemblies

M.Hassan
fonte
Excelente solução!
Akash Agarwal
Perfeito, funciona <ItemGroup Condition = "'$ (TargetFramework)' == 'net20' Or '$ (TargetFramework)' == 'net40'">
Stefan Steiger