将警告视为 TFS 级别 VS2017 上的错误

Treat Warnings as Errors on TFS level VS2017

我已经为此苦苦挣扎了一段时间。我已经搜索并尝试了不同的东西,但它不起作用,所以我在这里发布。

我想在 TFS 级别上构建时将警告视为错误,但此选项不起作用。

我已经按照其他帖子中的建议完成了:我已经尝试过: /p:TreatWarningsAsErrors=true 和 /p:TreatWarningsAsErrors="true"

Enabling TreatWarningsAsErrors

但是,在构建时没有成功,我得到以下结果: 该警告在 TFS 构建时未被视为错误。

Warning About Unused int

构建成功如下图,没有错误。

No errors in build

任何人都可以帮助我了解如何做到这一点吗?

更新: Obs:我确实知道使用 VS2017 时在项目属性上设置 TreatWarningAsErrors 的选项并且有效,因为那里的警告被视为错误,但这不适用于 TFS。

TreatWarningAsError on VS2017 project properties

Warning becomes error

我在 VS2017 中为 Debug 和 Release 的项目属性下启用了将警告视为错误。

Build on TFS

我们为此使用了 TFS 构建扩展,Build Quality Checks。将构建设置为超过阈值 0 将导致构建失败,出现任何编译器警告:

我在身边测试过,参数/p:TreatWarningsAsErrors="true"对我有效:

注意,如果你已经为项目启用了Treat Warnings As Errorsin VS(设置为ALLSpecific Warnings),则不需要添加参数/p:TreatWarningsAsErrors="true" 了。

因此,您可以尝试以下操作来缩小问题范围:

  • 启用该选项(设置为 All),然后 签入更改 ,然后构建 再次.
  • 禁用该选项(设置为None,保持默认即可),干净 为您的客户端服务器缓存,然后创建一个新的 构建定义,添加参数 /p:TreatWarningsAsErrors="true" 在构建步骤中。排队构建以检查它是否适合您。

更新:

正如 Kevin 在下面的评论中提到的,问题是 SonarQube 似乎在以某种方式干扰....刚刚创建了一个与第一个相同的新构建定义,但 没有 SonarQube Analysis 并且警告变成了解决方案构建中的错误。