Ваш проект не посилається на “.NETFramework, Версія = v4.6.2”. Додайте посилання на “.NETFramework, Версія = v4.6.2” у “TargetFrameworks”


103

Я не можу запускати свої модульні тести.

У мене наступна помилка:

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

В app.config:

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

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

Як я можу це виправити?


Відповіді:


249

Зробіть наступні кроки

  1. Чистий розчин
  2. Очистити папку "пакунки"
  3. Видалити папку "bin"
  4. Видалити папку "obj"

24
№ 3 та № 4 вирішили проблему. У мене була гілка, яка була завданням оновлення до 4.7.2, однак мені довелося перейти на іншу гілку, націлену на 4.7.1. Виконайте ці кроки, щоб вирішити цю проблему.
jjhayter

4
Довелося зробити ще один крок, з каталогу рішення: дель / S project.assets.json
Янній

Провівши це очищення, я з’ясував, що в проекті у мене сталася чергова помилка, яка відображала помилку .Net Framework. Виправлення вирішило проблему.
meJustAndrew

2
stackoverflow.com/a/755433/769137 має пакетні сценарії для їх видалення.
Ведран

1
Я оновив з 4.7.2 до 4.8, і мені було достатньо видалити obj/папки.
skst

29

Я відчував подібну проблему, але з 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папку, де розміщені основні проектиproject.assets.json файл. Насправді, саме цей файл заважає проекту Framework, перешкоджаючи його нормальній побудові. Здається, навіть якщо ви виконали Міграцію з package.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, не впевнені, чи вони десь добре задокументовані.


Це вирішило мою проблему. Інакше ніколи б не знайшов, дякую.
Ердоган Куртур

1
У VS2019 я виявив, що властивості, про які ви згадали, повинні бути перед OutputPath. Спочатку я просто скинув їх внизу csproj без успіху. У цьому дописі є деякі додаткові подробиці та випливає, що це може колись виправити
Джон Дайер,

17

Це трапилося зі мною під час відкриття проекту VS2015 у VS2017. Видалення project.assets.jsonз objпапки зробило трюк.

У будь-якому випадку, рамка з повідомлення відсутня у файлі, я не додав його туди, проте пішов із видаленням.


2
Найпростіше рішення з усіх. Просто знайдіть файл у розв’язанні та видаліть їх відразу :)
Імад,

5

Я проголосував за Ларису, але я вважав, що було б корисно дізнатись, як я потрапив у це. Я додав стандартний файл проекту .net до моєї збірки (ми націлені на багато платформ), і він видав сміття, знайдене в папці obj. Коли з’явилася збірка розсудливості для android, вона викинула папку obj. Моє рішення було очистити цю папку як крок попередньої збірки. Це складна проблема, тому що вона роками працювала просто чудово ... голка зустрічає копицю сіна.


2

У моєму випадку видаліть .pkgrefgen/папку під папкою проекту працює, вона містить файл project.assets.json, який посилається на стару .net framework


2
Моїм був файл project.assets.json у папці obj. Видалено папки bin та obj, і проблема зникла.
Церера

1

Я натрапив на те саме з .net 4.71. У моєму випадку я просто перекочував з package.config на "посилання на пакети" на

Перейдіть з package.config на PackageReference

... і це виправило мою проблему. Для мене я все одно збирався це зробити, тому, якщо ви вже йдете цим шляхом, я просто пропустив би вище та перейшов до посилань на пакунки.


0

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

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