我无法运行单元测试。
下一个错误:
您的项目未引用“ .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>
在Project> Properties> Application> TargetFramework(.NET Framework 4.6.2)中
我该如何解决?
答案 0 :(得分:58)
请进行下一步
答案 1 :(得分:30)
我遇到过类似的问题,但是遇到了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库。显然,它们共享相同的 obj
文件夹,Core项目放置 project.assets.json
文件。实际上,正是此文件干扰了Framework项目,从而阻止了其正常构建。似乎即使您执行了 Migrate from packages.config to PackageReference... ,这也是建议的一种可能解决方案。
您可以通过将以下代码片段放入Framework项目文件中来尝试解决此问题:
<Project>
...
<PropertyGroup>
<BaseOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/bin</BaseOutputPath>
<BaseIntermediateOutputPath>$(MSBuildProjectDirectory)/out/$(MSBuildProjectName)/obj</BaseIntermediateOutputPath>
</PropertyGroup>
...
</Project>
它立即为我工作,直到后来我专心阅读我们为什么需要它以及它为什么起作用。我在确保.NET Framework项目仍可构建部分的将示例WPF应用程序迁移到.NET Core 3 的part 2中意外地找到了它。可以在此处找到BaseOutputPath
和BaseIntermediateOutputPath
msbuild变量,不确定是否在任何地方都对其进行了很好的记录。
答案 2 :(得分:17)
在VS2017中打开VS2015项目时,这发生在我身上。从project.assets.json
文件夹中删除obj
就可以了。
无论如何,文件中缺少消息中的框架,但是我没有在其中添加它,而是删除了它。
答案 3 :(得分:14)
git clean -xdf
这应该可以解决问题。它在詹金斯也对我们有用。 (我们只是使用修改后的脚本重播失败的构建,该脚本首先运行 git clean )。
出于某种原因,MSBuild / Visual Studio 在针对不同版本 .NET Framework 的分支之间切换时会感到困惑,所以我不得不在分支之间切换时定期执行 git cleans。
答案 4 :(得分:2)
对于我来说,删除工程文件夹下的.pkgrefgen/
文件夹,它包含一个引用旧.net框架的文件 project.assets.json
答案 5 :(得分:1)
我在.net 4.71中遇到了同样的问题。就我而言,我只是根据
从packages.config迁移到“程序包引用”Migrate from packages.config to PackageReference
...它解决了我的问题。对于我来说,无论如何我都会这样做,因此,如果您已经按照这种方式进行操作,我将跳过以上内容并迁移到程序包引用。
答案 6 :(得分:1)
我投票赞成拉里萨(Larissa),但我认为了解这一点可能会有所帮助。我在构建中添加了一个.net标准项目文件(我们以许多平台为目标),它生成了在obj文件夹中找到的碎片。当android健全版本出现时,它放在obj文件夹中。我的解决方案是作为预构建步骤清除该文件夹。这是一个棘手的问题,因为它已经工作了好几年...针碰到干草堆。
答案 7 :(得分:1)
重命名项目为我解决了错误。问题发生在我创建 .NET Core 项目之后,然后我将其删除并创建了一个同名的 .NET Standard 项目。 Obj 文件夹根本不存在。删除 bin 文件夹、包、清理和重建解决方案以及使用覆盖获取最新版本都无济于事。
我还没有尝试过,但 this thread 建议的解决方法是包含在 csproj 标签中:
<ResolveNuGetPackages>false</ResolveNuGetPackages>
答案 8 :(得分:0)
我使用的是一个非常老的.NET项目,并且工作正常,直到突然停止。升级Visual Studio对我来说是固定的。