是否可以使编译器警告报告在不同版本的 MS 构建引擎之间保持一致?

问题描述

我有一个面向 .NET Core 3.1 的 C# 项目,我解决了所有编译器警告并将 TreatWarningsAsErrors 设置为 true。它从 Visual Studio 和命令行构建都很好。

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

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

我没有在发行说明中找到明确的信息,但我的直觉是,提到的版本之间的变化是这种行为的根本原因。

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

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

解决方法

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

参见此处的示例:https://github.com/dotnet/roslyn/issues/39906