【问题标题】:Your project does not reference ".NETFramework,Version=v4.6.2" framework. Add a reference to ".NETFramework,Version=v4.6.2" in the "TargetFrameworks"您的项目没有引用“.NETFramework,Version=v4.6.2”框架。在“TargetFrameworks”中添加对“.NETFramework,Version=v4.6.2”的引用
【发布时间】:2018-10-16 10:49:29
【问题描述】:

我无法运行我的单元测试。

我有下一个错误:

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

app.config:

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

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

我该如何解决?

【问题讨论】:

标签: c# unit-testing mstest csproj .net-framework-version


【解决方案1】:

请进行下一步

  1. 清洁解决方案
  2. 清理文件夹“packages”
  3. 删除文件夹“bin”
  4. 删除文件夹“obj”

【讨论】:

  • #3 和 #4 解决了这个问题。我有一个分支是升级到 4.7.2 的任务,但是我不得不切换到另一个针对 4.7.1 的分支。执行以下步骤来解决该问题。
  • 必须再做一步,从解决方案目录:del /S project.assets.json
  • stackoverflow.com/a/755433/769137 有用于删除这些的批处理脚本。
  • 我想知道为什么Clean 按钮不清理obj 文件夹。这样就解决了这个问题。
  • 我从4.7.2升级到4.8,删除obj/文件夹就够了。
【解决方案2】:

我遇到了类似的问题,但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 文件。实际上,正是这个文件干扰了框架项目,阻止了它的正常构建。似乎即使您执行了 Migrate from packages.config to PackageReference... 这被推荐为可能的解决方案之一。

您可以尝试通过将以下 sn-p 放入您的框架项目文件来解决此问题:

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

它立即对我有用,只是后来我仔细阅读了为什么我们需要它以及它为什么有效。我意外地在 确保 .NET Framework 项目仍在构建部分下的 将示例 WPF 应用程序迁移到 .NET Core 3part 2 中找到了它。 BaseOutputPathBaseIntermediateOutputPath msbuild 变量可以在那里找到,但不确定它们是否在任何地方都有很好的记录。

【讨论】:

  • 这解决了我的问题。否则我永远找不到它,谢谢。
  • 在VS2019中我发现你提到的属性需要在OutputPath之前。我最初只是将它们放在 csproj 的底部,但没有成功。这篇文章有一些额外的细节,并暗示这可能会在某个时候得到解决:github.com/dotnet/msbuild/issues/2070
  • 我试图将解决方案从 .Net Framework 4.7.2 迁移到 Net Core 5,但遇到了一些依赖问题。当我恢复时,我收到了这个错误。 Build Clean 没有做任何事情,但删除所有 obj(和 bin 以更好地衡量)目录让我回到了正轨。
  • 我通过将项目移动到其单独的文件夹解决了类似的问题。在同一个文件夹中有多个 csproj 文件似乎会导致问题。
【解决方案3】:

在 VS2017 中打开 VS2015 项目时发生在我身上。从obj 文件夹中删除project.assets.json 就可以了。

无论如何,文件中缺少消息中的框架,但我没有添加它,然后删除它。

【讨论】:

  • 最简单的解决方案。只需在解决方案中搜索文件并立即删除它们:)
【解决方案4】:
git clean -xdf

这应该可以解决问题。它在詹金斯也适用于我们。 (我们只是用一个修改过的脚本重放了失败的构建,该脚本首先运行 git clean)。

由于某种原因,MSBuild / Visual Studio 在针对不同版本的 .NET Framework 的分支之间切换时会感到困惑,因此我必须在分支之间切换时定期进行 git cleans。

【讨论】:

  • 这就是我的解决方案!谢谢!
  • 请注意,此命令将从工作树中删除所有未跟踪的文件,包括在.gitignore 文件中定义的文件。
【解决方案5】:

我对拉里萨投了赞成票,但我认为了解我是如何参与其中的可能会有所帮助。我在构建中添加了一个 .net 标准项目文件(我们针对许多平台),它产生了在 obj 文件夹中找到的碎片。当 android sanity build 出现时,它出现在 obj 文件夹中。我的解决方案是清理该文件夹作为预构建步骤。这是一个难题,因为它多年来一直运行良好......针见草垛。

【讨论】:

    【解决方案6】:

    就我而言,删除项目文件夹下的.pkgrefgen/ 文件夹works,它包含一个引用旧.net 框架的文件project.assets.json

    【讨论】:

    • 我的是 obj 文件夹中的 project.assets.json 文件。删除 bin 和 obj 文件夹,问题就消失了。
    【解决方案7】:

    对我造成问题的文件是项目文件夹中的 obj/project.assets.json。删除它并重建项目有效。

    【讨论】:

      【解决方案8】:

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

      的“包引用”

      Migrate from packages.config to PackageReference

      ... 它解决了我的问题。对我来说,无论如何我都会这样做,所以如果你已经这样做了,我会跳过上面的内容并迁移到包引用。

      【讨论】:

        【解决方案9】:

        我删除了 obj 文件夹并在它为我工作的属性窗口中选择所需的目标框架后重新运行构建。

        【讨论】:

          【解决方案10】:

          重命名项目为我解决了这个错误。问题发生在我创建 .NET Core 项目之后,然后我将其删除并创建了一个同名的 .NET Standard 项目。 obj 文件夹根本不存在。删除 bin 文件夹、包、清理和重建解决方案以及使用覆盖获取最新版本并没有帮助。

          我还没有尝试过,但是this thread 建议的解决方法是包含到 csproj 标记中:

          <ResolveNuGetPackages>false</ResolveNuGetPackages>
          

          【讨论】:

            【解决方案11】:

            我正在使用一个非常旧的 .NET 项目,它运行良好,直到它突然停止。升级 Visual Studio 已为我修复。

            【讨论】:

              【解决方案12】:

              在 VS2019 上,我必须按照错误消息并编辑项目目录中的 project.json 文件。

              ".NETFramework,Version=v4.0": {} // 无论复制的项目设置为什么
              现在 ".NETFramework,Version=v4.7.2": {} // 设置为当前构建设置的任何内容

              【讨论】:

                【解决方案13】:

                问题:在 VS2017 中。缺少对 .netframework 4.5.2 的引用,即使它被引用为目标框架。

                我的解决方案:已安装验证框架并重新启动机器。在 git clean 之后,只需右键单击探索中的解决方案并“恢复 nuget 包”就可以了。

                【讨论】:

                  猜你喜欢
                  • 2022-01-15
                  • 2020-12-20
                  • 1970-01-01
                  • 2016-07-11
                  • 2019-10-25
                  • 2019-01-03
                  • 1970-01-01
                  • 1970-01-01
                  • 2018-06-07
                  相关资源
                  最近更新 更多