MSBuild和IgnoreStandardErrorWarningFormat

lio*_*ori 7 msbuild

我正在尝试编写一个使用doxygen生成html文档的MSBuild项目.除了一个看似不完整的例子之外,我在网上找不到任何关于它的内容.它不解析doxygen警告.

我发现MSBuild的Exec任务有像IgnoreStandardErrorWarningFormat和CustomWarningRegularExpression这样的参数.什么是"标准错误/警告格式"以及这些属性中允许哪种RE?

编辑:啊,"Microsoft Build Engine内部"错误地将其描述为.NET 3.5中的属性,它实际上来自4.对我来说没用...

Ser*_*kov 14

标准的msbuild错误/警告格式如下所述:http://blogs.msdn.com/b/msbuild/archive/2006/11/03/msbuild-visual-studio-aware-error-messages-and-message-formats .aspx.

简而言之,格式为:

MSBuild识别由通常写入控制台的许多命令行工具特别格式化的错误消息和警告.例如,看看以下错误消息 - 它们都已正确格式化为MSBuild和Visual Studio友好.

Main.cs(17,20): warning CS0168: The variable 'foo' is declared but never used 
C:\dir1\foo.resx(2) : error BC30188: Declaration expected.
cl : Command line warning D4024 : unrecognized source file type 'foo.cs', object file assumed
error CS0006: Metadata file 'System.dll' could not be found.
Run Code Online (Sandbox Code Playgroud)

这些消息确认为下面显示的特殊格式,包含5个部分 - 这些部分的顺序很重要,不应更改:

规范错误/警告

来源(必填)

原点可以为空白.如果存在,则原点通常是工具名称,例如其中一个示例中的"cl".但它也可能是一个文件名,比如另一个例子中显示的'Main.cs'.如果它是文件名,则它必须是绝对或相对文件名,后跟可选的带括号的行/列信息,格式如下:

(line) or (line-line) or (line-col) or (line,col-col) or (line,col,line,col)
Run Code Online (Sandbox Code Playgroud)

子类别(可选)

子类别用于进一步对类别本身进行分类,不应本地化.

类别(必填)

类别必须是"错误"或"警告".案件没关系.与原点一样,类别不得本地化.

代码(必填)

代码标识特定于应用程序的错误代码/警告代码.代码不得本地化,且不得包含空格.

文字(可选)

用户友好的文本,用于解释错误,如果您满足多个区域设置,则必须进行本地化.


小智 5

此处的 MSBuild 源代码中完整记录了该格式。