赞
踩
如果条件表达式中需要数字,但该表达式的计算结果为非数值,则 MSBuild 项目文件中会出现此错误。 如果项目文件中出现此错误,请检查项目文件是否存在语法错误和其他问题。 有关语法的帮助,请参阅 MSBuild 条件中的 MSBuild 条件。
检查 MSBuild 属性以查看你是否按预期方式使用它们。 检查条件表达式中使用的属性(尤其是那些预期具有数值的属性)是否已使用正确的语法设置为数值。
如果设置数值时出现问题,则也会生成此错误。 根本原因可能是其他错误,例如安装问题。 例如,如果在条件表达式中使用了已安装工具的版本号,但未安装该工具。
我有超过 100 个项目的 Visual Studio 解决方案。 其中五个安装了 Fody 的 nuget 包(版本 6.0.3)。 当我尝试构建解决方案时,出现以下错误:
Fody.6.3.0\build\Fody.targets(38,12):错误 MSB4086:在“$(MsBuildMajorVersion)”上尝试了数值比较,结果为“”而不是数字,条件为“($(MsBuildMajorVersion) < 16)"
在这个失败的构建之后,我尝试重复构建,并且经过几次尝试(有时是一次,有时是五次)构建成功完成。 我试图重新安装所有 nuget 软件包,清除 nuget 缓存,重新安装 Visual Studio,设置MSBUILDDISABLENODEREUSE
变量,但没有任何帮助。
Visual Studio 2019 的版本为 16.8.4,所有项目的 .NET 框架的版本为 4.8。
更新:
问题只存在于我的机器上。 在同事的工作站上,一切正常。 我发现在构建不成功后应该重新启动 Visual Studio 并且构建过程成功的提示。 这个技巧对我来说是一个足够的解决方法。
该问题的解决方案是从packages.config
迁移到PackageReference
。 您可以在 Visual Studio 2019 中执行此操作:在解决方案资源管理器中展开您的项目,然后在References上单击鼠标右键并选择Migrate packages.config to PackageReference...
。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。