【问题标题】:Treat Warnings as Errors on TFS level VS2017将警告视为 TFS 级别 VS2017 上的错误
【发布时间】:2017-10-26 20:17:59
【问题描述】:

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

在 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

【问题讨论】:

  • 您是否将警告设置为所有构建配置的错误,可能是您已将其设置为调试(因此在 VS 中看到问题),但不是在发布时,这可能是您正在构建的TFS?
  • 我在 VS2017 中的项目属性部分更改了调试和发布,以启用所有警告作为错误。它在使用 VS2017 时有效。但是,当我将它推送到 TFS 并在那里构建它时,它们仍然被视为警告。还有其他建议吗?

标签: c# tfs tfsbuild


【解决方案1】:

我在我身边测试过,/p:TreatWarningsAsErrors="true" 的论点对我有用:

请注意,如果您为项目启用了Treat Warnings As Errorsin VS(设置为ALLSpecific Warnings),则无需再添加参数/p:TreatWarningsAsErrors="true"

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

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

更新:

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

【讨论】:

  • 我已经完成了所有步骤,但仍然没有成功。关于清理缓存,您提到了两件事:我通过从以下路径删除文件夹来清理客户端 TFS 的缓存:C:\Users\>\AppData\Local\Microsoft\Team Foundation。我读了它可能会导致问题。这就是您所说的“从 AppTier 和客户端服务器清除缓存的意思吗?
  • @KevinWrightII 是的,它是客户端缓存,不会造成任何问题,下次连接到 TFS 时会再次生成缓存文件。正如您从上面的屏幕截图中看到的那样,一切都在我身边。您使用的 TFS 2017 的确切版本是什么? update1 还是最新的 update3?如果还没有,请尝试升级到 update3。也尝试安装一个新的代理,确保您已经在代理机器上安装了 Vistual Studio,然后再试一次。
  • 我发现了问题。我创建了一个与第一个相同但没有 SonarQube 分析的新构建定义,并且警告成为解决方案构建中的错误。 SonarQube 似乎在以某种方式干扰......
  • @KevinWrightII 好吧,很高兴知道您已经解决了问题,并感谢您分享此内容。我已经更新了上面答案中的信息,你可以Accept it as an Answer,这对阅读这个帖子的其他社区成员很有帮助。
  • 感谢您的帮助。我会接受它作为答案。总而言之,SonarQube 不允许构建由于警告而失败。而且,正如上述答案所述,构建质量检查扩展可用于因警告而导致构建失败。
【解决方案2】:

为此,我们使用 TFS 构建扩展,Build Quality Checks。将构建设置为高于 0 的阈值将导致构建失败,因为任何编译器警告:

【讨论】:

  • 所以这意味着没有它是不可能的?我想知道是否可以针对 MsBuild Arguments 上的特定项目(显示在 Enabling TreatWarningsAsErrors 屏幕截图中)。那是因为我认为他们的目标可能是解决方案,而不是 /p:TreatWarningsAsErrors=true 的项目。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2011-01-05
  • 2012-01-13
  • 2022-08-03
  • 2010-11-05
  • 2013-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多