【问题标题】:In an MSBuild task, how can I access all warnings generated by the build?在 MSBuild 任务中,如何访问构建生成的所有警告?
【发布时间】:2017-05-04 18:54:55
【问题描述】:

我的总体目标是在解决方案构建结束时阅读所有警告,然后将它们记录为错误。这与 TreatWarningsAsErrors 设置不同,因为这也应该为有这些警告的项目创建二进制文件。

我希望通过自定义 MSBuild 任务来解决这个问题,但我不知道我需要从 .targets 文件中传递什么。

编辑:我不认为这是 this question 的副本,因为它解决了为特定字符串解析日志,并针对该特定代码发出错误。我想获取构建中所有警告的列表,无论它们的内容如何。

【问题讨论】:

  • How can I treat MSB3245 (could not resolve reference) warning as an error? 的可能重复项;问题看起来有些不同,但最终都是一样的:如何处理构建期间记录器发出的警告。
  • stjin - 这可能有用,但我不想仅仅捕捉某些警告。我想捕捉所有警告。由于这些可以有不同的形式,直接日志解析可能还不够。不过我会试试看的。
  • 据我所知,MS 工具发出的所有警告都应匹配不区分大小写的 warning [^:]+: 正则表达式,这很容易应用于链接的答案。如果其他工具希望其消息的行为与 res 一致,则它们最好遵循相同的约定。

标签: msbuild msbuild-task msbuild-target


【解决方案1】:

您无法从任务内部获得构建警告,因为它根本无法访问此信息。发出警告并发送到 MS Build 日志基础架构并在那里进行处理,这与任务执行完全分离。

但是,您可以编写自定义记录器来跟踪构建发出的警告。 使用您的自定义记录器,只要引发警告事件,只需将其记录下来,然后在构建完成时,您就可以使用该信息做任何您想做的事情。

请参阅文档herehere,了解如何编写自定义记录器。

【讨论】:

    猜你喜欢
    • 2017-01-17
    • 1970-01-01
    • 2011-01-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多