C# 是否可以使编译器警告报告在MS build engine的不同版本之间保持一致?
我有一个以.NET Core 3.1为目标的C#项目,我解决了所有编译器警告,并将C# 是否可以使编译器警告报告在MS build engine的不同版本之间保持一致?,c#,visual-studio,msbuild,roslyn,compiler-warnings,C#,Visual Studio,Msbuild,Roslyn,Compiler Warnings,我有一个以.NET Core 3.1为目标的C#项目,我解决了所有编译器警告,并将treatwarningaserrors设置为true。它可以从VisualStudio和命令行正常构建 但是,生成服务器上的生成失败,并将其中一个警告报告为错误:CS8625。我能发现的唯一区别是MS build engine的版本: 16.8.3本地 16.7.2在生成服务器上 我没有在发行说明中找到明确的信息,但我的直觉是,上述版本之间的更改是此类行为的根本原因 显然,我可以禁用.editorconfig
treatwarningaserrors
设置为true
。它可以从VisualStudio和命令行正常构建
但是,生成服务器上的生成失败,并将其中一个警告报告为错误:CS8625。我能发现的唯一区别是MS build engine的版本:
- 16.8.3本地
- 16.7.2在生成服务器上
.editorconfig
文件中提到的警告,并且它不会在本地和构建服务器上报告,但我更希望它以另一种方式运行
是否可以设置警告的报告方式,而不考虑生成引擎版本?它也可能是Roslyn的一个版本,与MSBuild无关。MSBuild和Roslyn都发展迅速,因此很难期望它们的行为在所有版本中都是相同的。您可以临时修复或忽略该警告,以便CI在更新为较新的MSBuild之前通过
请参见此处的示例:与什么一致?我认为唯一可行的方法是使用一个标志,强制更新版本使用与旧版本相同的警告规则。但是,您可能会错过对警告的任何改进。似乎更容易的解决办法是在任何地方都使用相同的版本。另外,我希望生成警告的是c#编译器csc.exe,而不是MSBuild,但它们可能是同一安装的一部分。能否显示该警告的一两个代码示例和完整消息?它也可能是Roslyn的一个版本,与MSBuild无关。MSBuild和Roslyn都发展迅速,因此很难期望它们的行为在所有版本中都是相同的。您可以临时修复或忽略该警告,以便CI在更新为较新的MSBuild之前通过。请看这里的例子:@KirillOsenkov谢谢,这就是我在与团队成员讨论后所做的。你能把你的评论塑造成一个答案吗?因为这是一个非常可行的方法,可能会帮助其他面临类似问题的人?