Референтні збори для фреймворку ".NETFramework, Version = v4.6.2" не знайдено


112

При спробі скласти рішення я отримую таку помилку побудови:

Помилка MSB3644 Посилальні збори для фреймворку ".NETFramework, Version = v4.6.2" не знайдено. Щоб вирішити цю проблему, встановіть пакет SDK або Targeting Pack для цієї версії рамки або перенаправіть свою програму на версію рамки, для якої встановлений пакет SDK або Targeting Pack. Зауважте, що збірки будуть вирішені з кеша глобальної асамблеї (GAC) і будуть використовуватися замість еталонних зборів. Тому ваша збірка може бути неправильно орієнтована на рамки, які ви плануєте. C: \ RPR \ Dev \ Bibliories \ Common \ Common.csproj C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Community \ MSBuild \ 15.0 \ Bin \ Microsoft.Common.CurrentVersion.targets 1111

Я спробував встановити .NET Framework 4.6.2 SDK, а також 4.6 Targeting Pack, однак обидві помилки, які я вже встановив. Я також спробував встановити Visual Studio 2017, але він все одно дає ту саму помилку.

Якісь ідеї?


4
Я бачив цю проблему, коли ви інсталюєте пакет розробників 4.5.2 (тобто не 4.6.2, а 4.5.2 пакет розробників).
Пітер Річі

У мене була ця проблема з 4.8, чомусь у мене файли csproj були 4.8.0всередині, що не так, як 4.8мабуть.
Яцек Горгонь

Дійсну відповідь дивіться у stackoverflow.com/a/58850755/155077
Стефан Штайгер

Відповіді:


96

Виявляється, я встановив .NET Framework v4.6.2, а не пакет розробників для 4.6.2. До!

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


Я встановив Dev Pack 462 і досі отримую попередження. Чи потрібно перезавантажувати машину?
Джим

5
мені довелося перезапустити візуальну студію після встановлення, тоді все добре
Jonesopolis

67

Windows -> Пошук -> Установник Visual Studio -> Змінити -> Окремі компоненти та перевірте правильну версію


9
Це чисте рішення, оскільки Visual Studio перелічить всі версії для вас та покаже, що ви зараз встановили, і буде керувати завантаженням / встановленням.
olive_tree

1
Випробували всі рішення вище, і жоден не працював. Цей зробив свою роботу. Спасибі
Чарлі Селігман

Шахта просить v4.6.1 (еталонні збірки), і він показує v4.6.1 (інструменти розробки), встановлені через інсталятор ... все ще намагається з’ясувати, що відбувається. Відмінити це: Моя проблема полягала в тому, що жодна з .NET-фреймворків не була встановлена ​​за замовчуванням. Дякую.
Xonatron

1
Це серйозно має бути головною відповіддю!
Томаш Хюбельбауер

Ця найкраща відповідь!
Himechi90


12

Я отримував таку саму помилку під час побудови, за винятком "NETFramework, Version = v4.7.1".

Я завантажив пакет для розробників для 4.7.1 звідси: https://www.microsoft.com/en-us/download/confirmation.aspx?id=56119

Пакет встановив ці програми на цільовій машині (мій сервер побудови).

  • Microsoft .NET Framework 4.7.1 SDK
  • Microsoft .NET Framework 4.7.1 Пакет націлювання
  • Microsoft .NET Framework 4.7.1 Пакет націлювання (ENU)

Коли я спробував будувати знову, я більше не отримав помилку, і збірка вдалася.


1
Аналогічна проблема (помилка побудови сервера). Була така ж помилка, але для 4.7.1, і це вирішило її для мене.
Брендан

Дітто за 4.7.2.
ЛосМанос

12

Починаючи з травня 2019 року ви можете створити свій проект на net20 до net48 (включаючи ne461) будь-яку машину з принаймні MSBuild або .NET Core SDK, встановлену без необхідності встановлення пакета розробників.

Якщо .NET Ядро SDK встановлений в вас машині, додайте NuGet пакет Microsoft.NETFramework.ReferenceAssemblies до вашого проекту

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

Пакет включає всі ReferenceAssemblies, починаючи від net20 до net48

Ці пакети дозволяють будувати проекти .NET Framework на будь-якій машині з встановленим принаймні MSBuild або .NET Core SDK плюс інші сценарії.

Детальніше: https://github.com/Microsoft/dotnet/tree/master/releases/reference-assemblies


Відмінне рішення!
Акаш Агарвал

Ідеально, працює <ItemGroup Condition = "'$ (TargetFramework)' == 'net20' Або '$ (TargetFramework)' == 'net40'">
Стефан Штайгер

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.