您的项目未引用“ .NETFramework,Version = v4.6.2”框架。在“ TargetFrameworks”中添加对“ .NETFramework,Version = v4.6.2”的引用


112

我无法运行单元测试。

我有下一个错误:

您的项目没有引用“ .NETFramework,Version = v4.6.2”框架。在项目文件的“ TargetFrameworks”属性中添加对“ .NETFramework,Version = v4.6.2”的引用,然后重新运行NuGet恢复。

app.config

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

在项目>属性>应用程序> TargetFramework(.NET Framework 4.6.2)中

我该如何解决?


Answers:


272

请进行下一步

  1. 清洁溶液
  2. 清理文件夹“包”
  3. 删除文件夹“ bin”
  4. 删除文件夹“ obj”

27
#3和#4解决了这个问题。我有一个分支,它是到4.7.2的升级任务,但是我不得不切换到另一个以4.7.1为目标的分支。请执行以下步骤来解决该问题。
jjhayter

4
必须从解决方案目录再执行一个步骤:del / S project.assets.json
Jannes '19

完成此清理后,我发现项目中出现另一个错误,该错误显示为.Net Framework错误。修复它可以解决问题。
meJustAndrew

2
stackoverflow.com/a/755433/769137具有用于删除这些脚本的批处理脚本。
Vedran

1
我从4.7.2升级到4.8,足以删除obj/文件夹。
skst

30

我遇到了类似的问题,但是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项目,从而阻止了其正常构建。即使您执行了从packages.config到PackageReference ...的迁移,似乎也建议这样做。

您可以通过将以下代码片段放入Framework项目文件中来尝试解决此问题:

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

它立即为我工作,直到后来我专心阅读我们为什么需要它以及它为什么起作用。我意外地发现它在第2部分迁移样品WPF应用程序到.NET核心3确保在.NET Framework项目还是建造部分。BaseOutputPathBaseIntermediateOutputPathmsbuild变量可以在此处找到,不确定是否在任何地方都对其进行了很好的记录。


这解决了我的问题。否则,我将永远找不到。
Erdogan Kurtur

1
在VS2019中,我发现您提到的属性必须在OutputPath之前。我最初只是将它们放在csproj的底部,但没有成功。这篇文章还有一些额外的细节,并暗示这可能会在某个时候解决: github.com/dotnet/msbuild/issues/2070
John Dyer

20

在VS2017中打开VS2015项目时,这发生在我身上。project.assets.jsonobj文件夹中删除可以解决问题。

无论如何,文件中缺少消息中的框架,但是我没有在其中添加它,而是删除了它。


2
最简单的解决方案。只需在解决方案中搜索文件并立即将其删除:)
Imad

5

我投票赞成拉里萨(Larissa),但我认为了解我的想法可能会有所帮助。我在构建中添加了一个.net标准项目文件(我们以许多平台为目标),它生成了在obj文件夹中找到的碎片。当android健全版本出现时,它放在obj文件夹中。我的解决方案是作为预构建步骤清除该文件夹。这是一个棘手的问题,因为它已经工作了好几年...针碰到干草堆。


2

就我而言,删除.pkgrefgen/工程文件夹下的文件夹,该文件夹包含一个引用旧.net框架的文件project.assets.json。


2
我的是obj文件夹中的project.assets.json文件。删除bin和obj文件夹,问题消失了。
谷神星

1

我在.net 4.71中遇到了同样的问题。就我而言,我只是从package.config迁移到每个

从packages.config迁移到PackageReference

...解决了我的问题。对于我来说,无论如何我都会这样做,因此,如果您已经按照这种方式进行操作,那么我将跳过以上内容并迁移到程序包引用。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.