我不能运行单元测试。

我有下一个错误:

你的项目没有引用“.NETFramework,Version=v4.6.2” 框架。在。net framework,Version=v4.6.2中添加一个引用 “TargetFrameworks”属性,然后重新运行NuGet 恢复。

在app.config:

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

在项目>属性>应用>目标框架(。NET Framework 4.6.2)

我该怎么解决呢?


请做下一步

清洁解决方案 清洁文件夹“包” 删除文件夹“bin” 删除文件夹"obj"


我在。net 4.71中遇到了同样的问题。在我的例子中,我只是从包迁移。配置为“包引用”

从包迁移。配置到PackageReference

…它解决了我的问题。对于我来说,我无论如何都要这样做,所以如果您已经这样做了,我就跳过上面的步骤,迁移到包引用。


我给拉丽莎投了票但我想知道我是怎么走到这一步的可能会有帮助。我添加了一个。net标准项目文件到我的构建(我们的目标是很多平台),它产生了在obj文件夹中找到的碎片。当android健全构建来了,它抛出了obj文件夹。我的解决方案是在构建前清理该文件夹。这是一个困难的问题,因为多年来它一直工作得很好……针遇上草堆。


我也遇到过类似的问题,但使用的是v4.7.2。也就是说,我一直得到这样的构建日志消息:

错误:你的项目没有引用“. net framework,Version=v4.7.2”框架。在项目文件的“TargetFrameworks”属性中添加对“. net framework,Version=v4.7.2”的引用,然后重新运行NuGet还原。

尽管看起来很相似,但上面建议的步骤对我都不起作用。每次构建之后,我都会看到这条消息。似乎什么也帮不上忙。

In fact, the problem was related to that, due to migration, I had to put two projects in one folder of code. One of them was targeted at .Net Core, another at .Net Framework, both referenced same .Net Standard libraries. Apparently, they share the same obj folder where Core projects put project.assets.json file. Actually, exactly this file interferres with the Framework project preventing its normal build. Seems even if you performed Migrate from packages.config to PackageReference... which was recommended as one of possible solution.

你可以尝试通过将下面的代码片段放入你的框架项目文件来修复这个问题:

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

它立刻对我起了作用,直到后来我仔细地读到为什么我们需要它,为什么它起作用。我意外地在《确保。net框架项目仍然构建》的第2部分将一个样本WPF应用程序迁移到。net Core 3中发现了它。BaseOutputPath和BaseIntermediateOutputPath msbuild变量可以在那里找到,不确定它们是否在任何地方都有良好的文档。


我正在使用一个非常老的。net项目,它一直工作得很好,直到它突然停止。升级Visual Studio固定为我你。


在VS2017中打开VS2015项目时,我就遇到了这种情况。从obj文件夹中删除project.assets.json就可以了。

无论如何,该消息的框架在文件中丢失了,我没有添加它,尽管删除了它。


在我的例子中,删除project文件夹works下的.pkgrefgen/文件夹,它包含一个引用旧的。net框架的project.assets.json文件


git clean -xdf

这样应该可以了。这在Jenkins中也适用。(我们只是用一个修改过的脚本重播了失败的构建,首先运行git clean)。

出于某种原因,MSBuild / Visual Studio在切换针对不同版本的。net框架的分支时感到困惑,所以我不得不在分支之间切换时定期进行git清理。


重命名项目为我解决了这个错误。问题发生在我创建。net Core项目之后,然后我删除了它,并创建了一个同名的。net Standard项目。Obj文件夹根本不存在。删除bin文件夹,包,清洁和重建解决方案和获得最新的覆盖没有帮助。

我没有尝试过,但是这个线程提出的解决方案是包括在csproj标签中:

<ResolveNuGetPackages>false</ResolveNuGetPackages>

在VS2019上,我不得不遵循错误消息并编辑项目。Json文件,在项目目录中。

".NETFramework,Version=v4.0":{} //无论复制的项目设置为什么 现在".NETFramework,Version=v4.7.2":{} //设置为当前版本的设置


问题:在VS2017。缺少对。netframework 4.5.2的引用,尽管它被引用为目标框架。

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


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


引起问题的文件是obj/project.assets。Json在项目文件夹中。删除它并重新构建项目成功了。


不管出于什么原因,我在VS2022中得到了这个构建错误。

在VS2019中同样的构建是成功的。


我在CI/CD过程中遇到了同样的问题,当我将。net框架版本从4.6.1升级到4.7.2时,无需任何其他修改即可在本地正常工作。

然而,jenkins的“奴隶”节点实际上生成的构建在nuget恢复方面有一些问题,由于某种原因,它无法选择最新的构建。

登录到jenkins的从机/节点(基本上是jenkins用来创建构建/工件的机器),转到部署路径,然后尝试删除项目的旧构建以及.nugets文件夹,并触发CI/CD进程再次为我工作。


如果您已经删除了提供nuget包的旧SDK,也会发生此错误,但它仍然在nuget管理器/设置下的包源列表中被引用。删除不再使用的nuget包源来修复此问题。否则,Visual studio在构建时会创建project.assets.json文件,并引用旧的sdk,如果路径不在那里,就会得到OP的错误。 在我的例子中,我的列表中有DevExpress 20.2,我删除了它来解决这个问题。