代码之家  ›  专栏  ›  技术社区  ›  liori

msbuild和ignorEstandarErrorWarningFormat

  •  7
  • liori  · 技术社区  · 14 年前

    我正在尝试编写一个msbuild项目,该项目将使用doxygen生成HTML文档。除了一个我在网上找不到任何关于这个的信息 example ,这似乎不完整;它不分析doxygen警告。

    我发现 MSBuild's Exec 任务具有IgnoreStandarErrorWarningFormat和CustomWarningRegularExpression等参数。“标准错误/警告格式”是什么?这些属性中允许什么类型的资源?

    编辑:啊,“微软内部构建引擎”错误地将它描述为.NET 3.5中的属性,实际上它是从4开始的。我没用…

    3 回复  |  直到 7 年前
        1
  •  14
  •   Sergii Volchkov    13 年前

    标准的msbuild错误/警告格式如下所述: http://blogs.msdn.com/b/msbuild/archive/2006/11/03/msbuild Visual Studio aware错误消息和消息格式.aspx->

    简而言之,格式是:

    < Buff行情>

    msbuild识别错误消息和警告,这些错误消息和警告是由许多通常写入控制台的命令行工具专门格式化的。例如,请查看以下错误消息-这些错误消息的格式都正确,以便对msbuild和Visual Studio友好。

    main.cs(17,20):warning cs0168:声明变量“foo”,但从不使用
    C:\dir1\foo.resx(2):错误BC30188:需要声明。
    cl:命令行警告D4024:无法识别的源文件类型“foo.cs”,假定为对象文件
    错误CS0006:找不到元数据文件“system.dll”。
    < /代码> 
    
    

    这些信息符合以下所示的特殊格式,由5部分组成-这些部分的顺序很重要,不应更改:

    来源(必需)

    原点可以为空。如果存在,则源代码通常是一个工具名,例如其中一个示例中的“cl”。但它也可以是一个文件名,如另一个示例中显示的“main.cs”。如果它是一个文件名,那么它必须是一个绝对或相对的文件名,后跟一个可选的带括号的行/列信息,格式如下:

    (line)or(line line line line)or(line col)or(line,col col)or(line,col,line,col)
    < /代码> 
    
    

    子类别(可选)

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

    类别(必需)

    类别必须是“错误”或“警告”。情况无关紧要。与原点一样,类别不能本地化。

    代码(必需)

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

    文本(可选)

    解释错误的用户友好文本,如果您要处理多个区域设置,则必须本地化 < /块引用> .

    简而言之,格式是:

    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

    来源(必需)

    原点可以为空。如果存在,则源代码通常是一个工具名,例如其中一个示例中的“cl”。但它也可以是一个文件名,如另一个示例中显示的“main.cs”。如果它是一个文件名,那么它必须是一个绝对或相对文件名,后跟一个可选的带括号的行/列信息,格式如下:

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

    子类别(可选)

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

    类别(必需)

    类别必须是“错误”或“警告”。情况无关紧要。与原点一样,类别不能本地化。

    代码(要求)

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

    文本(可选)

    解释错误的用户友好文本,以及必须如果您要适应多个地区,请进行本地化。

        2
  •  4
  •   cheerless bog    7 年前

    格式完全记录在msbuild源代码中 here .

        3
  •  3
  •   Brian    14 年前

    我现在在上面找不到文档,但我认为标准的错误格式类似于

    .*(\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