您的项目未引用“ .NETFramework,Version = v4.5”框架。


91

我正在使用VS 2015。

您的项目未引用“ .NETFramework,Version = 4.5”框架。在project.json的“框架”部分中添加对“ .NETFramework,Version = 4.5”的引用,然后重新运行NuGet restore。

添加到我的MVC层后不久,我在数据访问和业务逻辑层上收到此错误。直到那时一切都还不错,但是我不知道是什么触发了这个错误。这是我的project.json:

{
  "version": "1.0.0-*",
  "description": "foo bar Class Library",
  "authors": [ "foo bar" ],
  "tags": [ "" ],
  "projectUrl": "",
  "licenseUrl": "",

  "frameworks": {
    "net451": { },
    "dotnet5.4": {
      "dependencies": {
        "Microsoft.CSharp": "4.0.1-beta-23516",
        "System.Collections": "4.0.11-beta-23516",
        "System.Linq": "4.0.1-beta-23516",
        "System.Runtime": "4.0.21-beta-23516",
        "System.Threading": "4.0.11-beta-23516"
      }
    }
  }
}

这是我尝试过的:

  1. 如在此答案中找到的,用“ net451”替换“ dotnet5.4”(并删除)。

结果是相同的错误。

  1. 用“ net45”替换“ dotnet5.4”,并保留“ net451”。这导致一个新的错误:

您的project.json没有运行时部分。您应在project.json中添加'“ runtimes”:{“ win”:{}}',然后重新运行NuGet restore。

我尝试按照建议的错误进行操作并添加

"runtimes": {
    "win":  {}
  },

这给了我这个错误,我似乎无法过去:

您的project.json没有列出“ win”作为目标运行时。您应该在project.json的“运行时”部分内添加““ win”:{}”,然后重新运行NuGet restore。

我已经添加了“胜利”,这开始像红鲱鱼一样。我正在直接更改project.json,NuGet不处理此问题吗?


对于第一部分,请转到项目设置并将“目标框架”设置为4.5
Hirbod Behnam

已经设置好了。
S. Loveland ECY

1
@ S.LovelandECY您解决了这个问题吗?无论使用4.5.1、4.5.2还是4.6,我都遇到相同的问题-我的所有项目肯定都使用相同的框架版本。
蒂埃里

@ S.LovelandECY您可能要考虑更改已接受的答案,因为该答案与投票最高的答案之间存在差异
RJFalconer

Answers:


10

我实际上只是想出了问题。我最终Restore Nuget Packages在解决方案级别单击PCL,然后设法编译了文件,然后编译了其余的解决方案。

希望这可以帮助。


1
这个答案对我来说很重要。
科瓦奇

186

我遇到了同样的问题,最终我不仅要删除binobj文件夹的内容,还要删除.vs解决方案的目录。


1
.vs导致了我的问题
卢卡斯(Lukas),

7
这是我的解决方案!

9
.vs对我来说不是必需的。谢谢!
geynske006

2
我不知道如何正确地谢谢你。一个多小时以来,我一直在挠头,试图弄清这个问题。删除了全部3个,并且像一个吊饰一样工作。+1
tfrascaroli

2
我怀疑这个问题是由在我的本地开发盒上切换GitHub分支引起的。也就是说,我在一个分支中工作,编译会创建大量文件,这些文件不是存储库的一部分。然后我签出另一个分支,这些非存储库文件仍然存在。它们以某种方式与新签出的文件冲突。
Phoeniceus Agelaius

127

我遇到了同样的问题-仍然使用Visual Studio 2017.3发生这种情况,它使用.csproj文件而不是project.json。有趣的是,错误消息仍然包含文本“ project.json”。

看来此问题的原因是obj\project.assets.json来自先前构建的一个锁定文件或一个文件(取决于VS的版本),该文件在清理过程中不会被删除,如此处所述

手动删除/obj目录是一种快速的解决方法。

如果您在同一目录中有一个“新”项目(例如,在VS 2017中创建的.NET Core或netstandard项目)和一个“旧”项目(例如在VS 2015中创建的.NET 4.6项目),并且它们在同一目录中,则它们似乎会继续发生冲突,因为他们都./obj以不同的方式使用目录。更多信息在这里。

msbuild解决方法是使您的项目之一使用其他obj目录。我将此添加到我的“旧” csproj中:

<PropertyGroup>
  <!-- Needed due to old project and new project in same directory: https://github.com/NuGet/Home/issues/5126 -->
  <BaseIntermediateOutputPath>obj_netfx\</BaseIntermediateOutputPath>
</PropertyGroup>

4
此解决方法在VS 2017上运行良好,您按时节省了我。
MechanicalCoder

2
辉煌。很好的解释。
米克·伯恩

1
让我感谢我。删除所有有问题的“ obj”文件夹也解决了我的问题。
斯图尔特

2
上帝祝福你!我想知道血腥的project.json文件在哪里。删除/ obj做到了
Vishnoo Rath

1
即使在VS 2019中仍然是一个问题。感谢您的解决方案!
user2363676 '19

27

我发现一个流氓project.lock.json对我造成了此问题。删除文件后,问题就消失了。

是有关project.lock.json的一些文档。

一些进一步的建议是确保在您的git ignore文件中忽略project.lock.json,并尝试完整的git clean。但是,在执行此操作之前,请确保您了解Git清理的含义。


2

更新为Mac 7.4(内部版本1033)的Visual Studio之后,我遇到了相同的问题:

Error: Your project is not referencing the "MonoAndroid,Version=v7.1" framework. Add a reference to "MonoAndroid,Version=v7.1" in the "frameworks" section of your project.json, and then re-run NuGet restore.

我没有任何json项目文件。此处的提示也无济于事,因此,除了目标SDK(Nougat 7.1)之外,我还必须找出安装最新的Android SDK(Oreo 8.1)的艰难方法。

在此处输入图片说明


0

我有同样的问题,但是我已经通过在vs2017-->tools-->options-->Nugetpacakge manager--->updated适当的包URL上添加适当的块包资源来解决 。

参考下图

在此处输入图片说明

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.