当前位置:   article > 正文

C#:MSB4086:在条件“condition”中,尝试对计算结果为“value”而不是数字的“expression”进行数值比较

C#:MSB4086:在条件“condition”中,尝试对计算结果为“value”而不是数字的“expression”进行数值比较

C#:MSB4086:在条件“condition”中,尝试对计算结果为“value”而不是数字的“expression”进行数值比较

如果条件表达式中需要数字,但该表达式的计算结果为非数值,则 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... 。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/羊村懒王/article/detail/66169
推荐阅读
相关标签
  

闽ICP备14008679号