在 MSBuild 任务中,如何访问构建生成的所有警告?

In an MSBuild task, how can I access all warnings generated by the build?

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

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

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

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

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

请参阅有关如何编写自定义记录器的文档 here and here