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?


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:



67

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


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.


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


Excelente solução!
Akash Agarwal

Perfeito, funciona <ItemGroup Condition = "'$ (TargetFramework)' == 'net20' Or '$ (TargetFramework)' == 'net40'">
Stefan Steiger

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.