【问题标题】:Is it possible to make the compiler warnings reporting consistent between different versions of MS build engine?是否可以使编译器警告报告在不同版本的 MS 构建引擎之间保持一致?
【发布时间】:2021-06-09 11:11:43
【问题描述】:

我有一个针对 .NET Core 3.1 的 C# 项目,我在其中解决了所有编译器警告并将 TreatWarningsAsErrors 设置为 true。它可以从 Visual Studio 和命令行构建。

但是,构建服务器上的构建失败并将警告之一报告为错误:CS8625。我能发现的唯一区别是 MS 构建引擎的版本:

  • 16.8.3 本地
  • 16.7.2 在构建服务器上

我未能在发行说明中找到明确的信息,但我的直觉是,上述版本之间的更改是此类行为的根本原因。

显然,我可以禁用.editorconfig 文件中提到的警告,并且不会在本地和构建服务器上报告它,但我希望它以相反的方式运行。

是否可以设置始终报告警告的方式而不考虑构建引擎版本?

【问题讨论】:

  • 与什么一致?我认为可行的唯一方法是强制新版本使用与旧版本相同的警告规则的标志。但是你会错过对警告的任何改进。似乎更简单的解决方法是在任何地方都使用相同的版本。另外,我希望它是生成警告的 c# 编译器 csc.exe,而不是 MSBuild,但它们可能是同一安装的一部分。
  • 你能展示一两个关于该警告的代码示例和完整的消息吗?
  • 它也可能是 Roslyn 的一个版本,与 MSBuild 无关。 MSBuild 和 Roslyn 都发展迅速,因此很难期望它们的行为在所有版本中都是相同的。您可以临时修复或忽略该警告,以便您的 CI 通过,直到它更新到较新的 MSBuild。示例见此处:github.com/dotnet/roslyn/issues/39906
  • @KirillOsenkov 谢谢,这就是我与团队成员讨论后最终做的事情。您能否将您的评论转化为答案,因为它是一种非常可行的方法,并且可能会帮助其他面临类似问题的人?

标签: c# visual-studio msbuild roslyn compiler-warnings


【解决方案1】:

它也可能是 Roslyn 的一个版本,与 MSBuild 无关。 MSBuild 和 Roslyn 都发展迅速,因此很难期望它们的行为在所有版本中都是相同的。您可以暂时修复或忽略该警告,以便您的 CI 通过,直到它更新到较新的 MSBuild。

查看示例:https://github.com/dotnet/roslyn/issues/39906

【讨论】:

    猜你喜欢
    • 2012-10-17
    • 1970-01-01
    • 2015-11-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-21
    • 2015-10-08
    相关资源
    最近更新 更多