【问题标题】:Your project is not referencing the ".NETFramework,Version=v4.5" framework.您的项目未引用“.NETFramework,Version=v4.5”框架。
【发布时间】:2016-07-11 11:27:53
【问题描述】:

我正在使用 VS 2015。

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

在添加到我的 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. 将“dotnet5.4”替换为“net451”(并删除),如 this answer 中所示。

结果是同样的错误。

  1. 将“dotnet5.4”替换为“net45”并保留“net451”。这会导致一个新错误:

您的 project.json 没有运行时部分。你应该添加 '"runtimes": { "win":{} }' 到你的 project.json 然后重新运行 NuGet 恢复。

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

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

这给了我这个错误,我似乎无法超越:

您的 project.json 没有将“win”列为目标运行时。你应该 在 project.json 的 "runtimes" 部分中添加 '"win": {}', 然后重新运行 NuGet 还原。

我已经添加了“win”,这开始让人感觉像是一条红鲱鱼。我在做什么直接改变 project.json,NuGet 不是在处理这个吗?

【问题讨论】:

  • 对于第一部分,转到您的项目设置并将目标框架设置为 4.5
  • 已经这样设置了。
  • @S.LovelandECY 你解决了吗?无论我使用 4.5.1、4.5.2 还是 4.6,我都会遇到同样的问题 - 我的所有项目肯定都使用相同的框架版本。
  • @S.LovelandECY 您可能需要考虑更改已接受的答案,因为它与投票最高的答案之间存在差异

标签: .net json entity-framework visual-studio-2015 nuget


【解决方案1】:

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

希望这会有所帮助。

【讨论】:

【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

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

    【讨论】:

    • .vs 给我造成了这个问题
    • 这就是我的解决方案!
    • .vs 对我来说不是必需的。谢谢!
    • 我不知道该如何正确地感谢你。一个小时的大部分时间里,我一直在挠头,试图弄清楚这一点。删除了所有 3 个并像魅力一样工作。 +1
    • 我怀疑这个问题是在我的本地开发盒子上切换GitHub分支引起的。也就是说,我在一个分支中工作,编译会创建许多不属于存储库的文件。然后我签出一个不同的分支,这些非存储库文件仍然存在。不知何故,它们与新签出的文件发生冲突。
    【解决方案4】:

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

    看来此问题的原因是以前版本中的锁定文件或 obj\project.assets.json 文件(取决于您的 VS 版本),在清理过程中不会删除 as described here

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

    如果您有一个“新”项目(例如 VS 2017 中创建的 .NET Core 或 netstandard 项目)和同一目录中的“旧”项目(例如 VS 2015 中创建的 .NET 4.6 项目),它们似乎会不断战斗,因为他们都以不同的方式使用./obj dir。 More info here..

    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>
    

    【讨论】:

    • 此解决方法适用于 VS 2017,您准时救了我。
    • 太棒了。很好的解释。
    • 让我补充一下我的谢意。删除所有有问题的“obj”文件夹也解决了我的问题。
    • 上帝保佑你!我想知道该死的 project.json 文件在哪里。删除 /obj 做到了
    • 即使在 VS 2019 中仍然存在问题。感谢您的解决方案!
    【解决方案5】:

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

    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) 的艰难方法。

    【讨论】:

      【解决方案6】:

      我有同样的问题,但我已经通过在 vs2017--&gt;tools--&gt;options--&gt;Nugetpacakge manager---&gt;updated 正确的包地址。

      参考下图

      【讨论】:

        猜你喜欢
        • 2020-12-20
        • 2019-10-25
        • 1970-01-01
        • 1970-01-01
        • 2019-01-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多