【发布时间】:2018-08-30 01:31:54
【问题描述】:
我有一个库,用于通过执行如下命令行来针对不同版本的 .NET 构建:msbuild x.csproj /p:TargetFrameworkVersion=v4.6.2 ... 多次使用不同的属性 TargetFrameworkVersion 值。现在我想将 .NET 4.7.1 添加到脚本中。 4.7.1 的构建成功,但下一个构建失败并显示如下消息:
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\Microsoft\NuGet\15.0\Microsoft.NuGet.targets(186,5): 错误:您的项目没有引用“.NETFramework ,Version=v4.6.2" 框架。在 project.json 的“frameworks”部分添加对“.NETFramework,Version=v4.6.2”的引用,然后重新运行 NuGet 还原。 [x.csproj]
我搜索了很多此消息,但找不到任何可以修复我的构建脚本的有用解决方案。最接近解决方案的是this。但是在每个 msbuild 之前删除 project.assets.json 并没有帮助。显然,为不同版本的 .NET 还原 NuGet 包存在问题。 能否请您提出解决方案。
【问题讨论】:
-
顺便说一句,为什么您需要针对不同版本的 .NET 进行构建?在大多数情况下,您应该针对单个 .NET Framework 版本进行编译,然后针对其他平台(例如 .NET Standard、Xamarin)进行编译。你现在所做的没有真正的价值。
-
您是否尝试过手动删除该项目的 bin 和 obj 文件夹,而不仅仅是清理构建?
-
@Lex Li,因为有些人在使用该库的旧 .NET(例如 4.5)上,但我想继续前进并保持最新状态。
-
@Leo Liu,是的,我试过了,效果和只删除 project.json 文件一样:在 4.7.1 上有效,在早期版本上失败。
-
基于 .NET Framework 4.5 构建的程序集可以在更高版本上完美运行(除非您真的想针对某些非常特殊的情况进行有条件编译)。
标签: .net msbuild visual-studio-2017 nuget .net-4.7.1