Ваш проект не ссылается на платформу .NETFramework, Version = v4.6.2. Добавьте ссылку на .NETFramework, Version = v4.6.2 в TargetFrameworks

Я не могу запускать свои модульные тесты.

У меня следующая ошибка:

Ваш проект не ссылается на фреймворк ".NETFramework, Version = v4.6.2". Добавьте ссылку на .NETFramework, Version = v4.6.2 в свойстве TargetFrameworks файла проекта, а затем повторно запустите восстановление NuGet.

In app.config:

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

В Project> Properties> Application> TargetFramework (.NET Framework 4.6.2)

Как я могу это исправить?


person Василь Ткачук    schedule 16.10.2018    source источник
comment
stackoverflow.com/ вопросы / 43238747 /   -  person CodeCaster    schedule 16.10.2018


Ответы (9)


Пожалуйста, сделайте следующие шаги

  1. Чистое решение
  2. Чистая папка "пакеты"
  3. Удалить папку "bin"
  4. Удалить папку "obj"
person Larissa Savchekoo    schedule 15.11.2018
comment
№3 и №4 решили проблему. У меня была ветка, которая была задачей обновления до 4.7.2, однако мне пришлось переключиться на другую ветку, нацеленную на 4.7.1. Выполните следующие действия, чтобы решить эту проблему. - person jjhayter; 06.03.2019
comment
Пришлось сделать еще один шаг из каталога решения: del / S project.assets.json - person Jannes; 07.05.2019
comment
После выполнения этой чистки я обнаружил, что у меня была еще одна ошибка в проекте, которая отображала ошибку .Net Framework. Исправление решило проблему. - person meJustAndrew; 26.08.2019
comment
stackoverflow.com/a/755433/769137 содержит пакетные сценарии для их удаления. - person Vedran; 22.11.2019
comment
№ 3 и 4 решают мою проблему, но мне нужно покинуть визуальную студию. - person user1154390; 09.03.2020
comment
после удаления /packages мне также пришлось запустить nuget restore - person imnk; 07.04.2020
comment
Интересно, почему кнопка Clean не очищает папку obj. Это решило бы эту проблему. - person HackSlash; 03.08.2020
comment
Вы можете использовать этот сценарий PowerShell для удаления всего мусорного ведра и объекта gist.github.com/alikrc/f6c08b77d1968c58c5 - person Ali Karaca; 11.08.2020
comment
Я обновился с 4.7.2 до 4.8, и мне было достаточно удалить obj/ папки. - person skst; 15.09.2020
comment
есть идеи, почему эти досадные ошибки возникают в продукте вроде vs? - person bigpony; 04.12.2020
comment
Для пользователей Mercurial (после закрытия IDE): hg purge --all (будьте осторожны: при этом удаляются все файлы, которые не находятся под контролем версий, что именно то, что вы ожидаете в большинстве случаев чистого решения ) - person CodeFox; 28.12.2020

У меня возникла аналогичная проблема, но с v4.7.2. А именно, я продолжал получать такое сообщение журнала сборки:

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.

Несмотря на то, что это выглядело похоже, ни один из предложенных выше шагов не помог мне. Я продолжал видеть это сообщение после каждой сборки. Казалось, ничто не могло помочь.

На самом деле проблема была связана с тем, что из-за миграции мне пришлось поместить два проекта в одну папку кода. Один из них был нацелен на .Net Core, другой - на .Net Framework, оба ссылались на одни и те же стандартные библиотеки .Net. Судя по всему, они используют ту же папку obj, в которую проекты Core помещают файл project.assets.json. Собственно, именно этот файл мешает проекту Framework и мешает его нормальной сборке. Кажется, даже если вы выполнили Перенести из packages.config в PackageReference ..., который был рекомендован как одно из возможных решений.

Вы можете попытаться решить проблему, поместив следующий фрагмент в файл проекта Framework:

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

У меня сразу сработало, только потом, когда я внимательно прочитал, зачем он нам нужен и почему работает. Неожиданно нашел его в часть 2 раздела Перенос образца приложения WPF на .NET Core 3 в разделе Обеспечение продолжения сборки проекта .NET Framework. Здесь можно найти переменные BaseOutputPath и BaseIntermediateOutputPath msbuild, не уверен, хорошо ли они где-либо задокументированы.

person moudrick    schedule 03.02.2020
comment
Это решило мою проблему. Иначе я бы никогда не нашел, спасибо. - person Erdogan Kurtur; 16.02.2020
comment
В VS2019 я обнаружил, что упомянутые вами свойства должны быть перед OutputPath. Сначала я просто опустил их в конец csproj безуспешно. Этот пост содержит некоторые дополнительные сведения и подразумевает, что это может быть исправлено в какой-то момент: github.com/dotnet / msbuild / issues / 2070 - person John Dyer; 01.09.2020
comment
Я пытался перенести решение с .Net Framework 4.7.2 на Net Core 5 и столкнулся с некоторыми проблемами с зависимостью. Когда я вернулся, я получал эту ошибку. Build Clean ничего не сделала, но удаление всех каталогов obj (и bin на всякий случай) вернуло меня в нужное русло. - person Brandon Barkley; 04.06.2021
comment
Я решил аналогичную проблему, переместив проекты в отдельные папки. Кажется, что наличие нескольких файлов csproj в одной папке вызывает проблемы. - person PMF; 09.07.2021

Это случилось со мной при открытии проекта VS2015 в VS2017. Удаление project.assets.json из папки obj помогло.

В любом случае, Framework из сообщения отсутствовал в файле, но я не добавлял его туда, а удалил его.

person tanuk    schedule 18.02.2020
comment
Самое простое решение из всех. Просто найдите файл в растворе и сразу удалите его :) - person Imad; 06.08.2020

git clean -xdf

Это должно делать свое дело. У нас это сработало и в Jenkins. (мы просто воспроизвели неудачную сборку с помощью модифицированного скрипта, который сначала запустил git clean).

По какой-то причине MSBuild / Visual Studio путаются при переключении между ветвями, предназначенными для разных версий .NET Framework, поэтому мне приходилось регулярно выполнять очистку git при переключении между ветвями.

person Shahin Dohan    schedule 22.01.2021
comment
это было решение в моем случае! благодарю вас ! - person Roni Axelrad; 10.03.2021

Я проголосовал за Ларису, но подумал, что было бы полезно узнать, как я попал в это. Я добавил в свою сборку стандартный файл проекта .net (мы нацелены на множество платформ), и он создал мусор, найденный в папке obj. Когда появилась сборка работоспособности Android, ее вырвало в папку obj. Мое решение заключалось в том, чтобы очистить эту папку перед сборкой. Это сложная проблема, потому что она отлично работала годами ... иголка встречается со стогом сена.

person Pale Ale    schedule 07.05.2019


В моем случае удалите папку .pkgrefgen/ в папке проекта, она содержит файл project.assets.json, который относится к старой платформе .net.

person Yitong Feng    schedule 26.02.2020
comment
У меня был файл project.assets.json в папке obj. Удалил папки bin и obj, и проблема исчезла. - person Ceres; 14.04.2020

Переименование проекта решило ошибку для меня. Проблема возникла после того, как я создал проект .NET Core, затем я удалил его и создал проект .NET Standard с тем же именем. Папка Obj вообще отсутствовала. Удаление папки bin, пакетов, решения для очистки и восстановления и получение последней версии с переопределением не помогло.

Я не пробовал это, но эта ветка Предлагаемый обходной путь должен быть включен в тег csproj:

<ResolveNuGetPackages>false</ResolveNuGetPackages>
person K. B.    schedule 11.03.2021

Я использую очень старый проект .NET, и он работал нормально, пока внезапно не остановился. Обновление Visual Studio исправлено для меня ты.

person Edgar Froes    schedule 11.02.2020