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

Вас*_*чук 42 c# unit-testing mstest csproj .net-framework-version

我无法进行单元测试.

我有下一个错误:

您的项目未引用".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>
Run Code Online (Sandbox Code Playgroud)

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

我该如何解决?

小智 112

请进行后续步骤

  1. 清洁解决方案
  2. 清理文件夹"包"
  3. 删除文件夹"bin"
  4. 删除文件夹"obj"

  • p.3&4足以让我解决这个问题.谢谢! (23认同)
  • 已经快2022年了,这样的事情还在发生!$MSFT,请修复它。 (9认同)
  • #3和#4解决了这个问题。我有一个分支,它是到4.7.2的升级任务,但是我不得不切换到另一个以4.7.1为目标的分支。请执行以下步骤来解决该问题。 (7认同)
  • /sf/answers/52880341/ 有用于删除这些的批处理脚本。 (3认同)
  • 必须从解决方案目录再执行一个步骤:del / S project.assets.json (2认同)
  • 我想知道为什么“清理”按钮不清理“obj”文件夹。这样就可以解决这个问题。 (2认同)
  • 我从 4.7.2 升级到 4.8,删除 `obj/` 文件夹就足够了。 (2认同)
  • 知道为什么像 vs 这样的产品会出现这种恼人的错误吗? (2认同)

Aji*_*ith 79

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

  • 这大概就是问题的答案。奇妙的事实:清理/重建不起作用。 (9认同)
  • 太棒了:对我来说效果很好。 (3认同)
  • 删除 Obj 文件夹解决了该问题。谢谢 (2认同)
  • 对我来说,这是从 .NET Core 切换到 .NETFrameworks 造成的,这个解决方案对我有用。 (2认同)
  • 我将“del $(ProjectDir)\obj\\*.json”添加到预构建事件中,以防止这种情况再次发生。 (2认同)

mou*_*ick 42

我遇到了类似的问题,但使用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 Standard 库。显然,它们共享objCore 项目放置project.assets.json文件的同一个文件夹。实际上,正是这个文件干扰了框架项目,阻止了它的正常构建。似乎即使您执行了从 packages.config 迁移到 PackageReference...也被推荐为可能的解决方案之一。

您可以尝试通过将以下代码段放入您的框架项目文件来解决该问题:

<Project>
  ...
  <PropertyGroup>
    <BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
    <BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
  </PropertyGroup>
  ...
</Project>
Run Code Online (Sandbox Code Playgroud)

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


小智 31

在 VS2017 中打开 VS2015 项目时发生了这种情况。project.assets.jsonobj文件夹中删除就行了。

无论如何,文件中缺少消息中的框架,但我没有将其添加到那里,而是将其删除。

  • 最简单的解决方案。只需在解决方案中搜索该文件并立即删除它们:) (2认同)

Sha*_*han 18

git clean -xdf
Run Code Online (Sandbox Code Playgroud)

这应该够了吧。它在詹金斯也对我们有用。(我们只是使用首先运行 git clean 的修改脚本重播失败的构建)。

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

  • 请注意,此命令将从工作树中删除所有未跟踪的文件,包括“.gitignore”文件中定义的文件。 (7认同)
  • 这就是我的情况的解决方案!谢谢 ! (2认同)

小智 10

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


Yit*_*eng 6

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

  • 我的是 obj 文件夹中的 project.assets.json 文件。删除 bin 和 obj 文件夹,问题就消失了。 (4认同)

小智 5

我对拉里萨投了赞成票,但我认为了解我是如何进入这个领域的可能会有所帮助。我在我的构建中添加了一个 .net 标准项目文件(我们针对很多平台),它产生了在 obj 文件夹中找到的碎片。当 android sanity build 出现时,它吐在 obj 文件夹上。我的解决方案是作为预构建步骤清除该文件夹。这是一个棘手的问题,因为它多年来一直工作得很好……针与草。