MSBuild和IgnoreStandardErrorWarningFormat

时间:2010-08-09 15:14:05

标签: msbuild

我正在尝试编写一个使用doxygen生成html文档的MSBuild项目。除了一个example之外,我在网上找不到任何相关内容,这似乎不完整;它没有解析doxygen警告。

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

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

3 个答案:

答案 0 :(得分: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.
     

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

     

Canonical Errors/Warnings

     

Origin(必填)

     

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

(line) or (line-line) or (line-col) or (line,col-col) or (line,col,line,col)
     

子类别(可选)

     

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

     

类别(必填)

     

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

     

代码(必填)

     

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

     

文字(可选)

     

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

答案 1 :(得分:4)

格式完整记录在MSBuild源代码here中。

答案 2 :(得分:3)

我现在无法在其上找到文档,但我认为标准错误格式类似于

.*(\d+(,\d+(,\d+,\d+)?)?)?: error .*:.*
.*(\d+(,\d+(,\d+,\d+)?)?)?: warning .*:.*

的示例:

c:\somefile.txt(10,20,10,30): error CMD1234: blarg
c:\somefile.txt(10,20): error CMD1234: yadda yadda
c:\somefile.txt: warning ARG5678: blah blah