计算来自MSBuild任务的警告

时间:2011-08-11 20:34:40

标签: msbuild msbuild-task

我有以下msbuild goop:

<MSBuild Projects="$(MySLN)" Targets="Build" />
<!--count all warning and fail if > 20-->
<Exec WorkingDirectory="$(BuildFolder)"
  IgnoreExitCode="true"
  Command="$(POWERSHELL) -command $host.SetShouldExit(([xml](get-content '$(LogsFolder)productbuild-results.xml')).SelectNodes('//warning').count)"
>
  <Output PropertyName="BuildSLNWarningCount" TaskParameter="ExitCode" />
</Exec>

理论上,这将计算日志文件中的警告数量,因此如果有太多(在我们的情况下大于20),我可以中止构建。

但是,我不知道如何让MSBuild任务输出日志文件 - 从运行此任务的主MSBuild文件生成的日志文件中分离出来。此外,我仍然需要主日志文件来包含CCnet使用的完整构建详细信息。

这可能吗?

由于

2 个答案:

答案 0 :(得分:1)

我认为你最好的选择是编写一个自定义的MSBuild任务,它可以完成你需要的一切,并在你的构建脚本中调用它。我在博客上写了一个例子here。我的任务与你的任务截然不同,但你应该得到关于编写自定义任务的主要概念。

更新:另一个可能性是使用Exec任务调用MSBuild将其输出重定向到文件:

<Exec WorkingDirectory="$(BuildFolder)"
  IgnoreExitCode="true"
  Command="$(MSBuildDirectory)msbuild params > output_file.txt"
>

答案 1 :(得分:1)

我建议使用BuildManager课程...... BuildManager上的BeginBuild方法允许您传入一组包含Loggers属性的BuildParameters。在Logger中,您可以捕获任何MSBUILD输出和计数等。