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

在MSBuild任务中,如何访问生成生成的所有警告?,msbuild,msbuild-task,msbuild-target,Msbuild,Msbuild Task,Msbuild Target,我的总体目标是在解决方案构建结束时读取所有警告,然后将它们记录为错误。这与TreatWarningAsErrors设置不同,因为这还应该为具有这些警告的项目创建二进制文件 我希望通过自定义MSBuild任务来解决这个问题,但我不知道需要从.targets文件传递什么 编辑:我不认为这是的重复,因为这解决了解析特定字符串的日志,并针对特定代码发出错误。我想获得生成中所有警告的列表,无论其内容如何 您无法从任务内部获取生成警告,因为它根本无法访问此信息。发出警告并将其发送到MS Build日志基础结

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

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


编辑:我不认为这是的重复,因为这解决了解析特定字符串的日志,并针对特定代码发出错误。我想获得生成中所有警告的列表,无论其内容如何

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

但是,您可以编写自定义记录器来跟踪生成发出的警告。 使用您的自定义记录器,每当引发警告事件时,只需记录它,然后在构建完成时,您就可以使用该信息执行任何操作


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

可能的副本;问题看起来有些不同,但最终都是一样的:如何在build.stjin期间对logger发出的警告采取行动-这可能很有用,但我不想只捕获某些警告。我想抓住所有的警告。由于它们可以以不同的形式出现,直接日志解析可能还不够。不过我会试试。据我所知,MS tools发出的所有警告都应该匹配不区分大小写的
warning[^:::+:
regex,这很容易应用于链接的答案。如果其他工具希望其消息的行为与res一致,则最好遵循相同的约定。