如何记录每种任务的花费时间?

时间:2013-08-12 13:43:01

标签: msbuild teamcity

在Teamcity上,我的项目构建日志如下所示:

[Build] MSBuild (28s)
    [CoreCompile] Csc (6s)
    [RunCodeAnalysis] CodeAnalysis (11s)
    [StyleCop] StyleCopTask (9s)

[Build] MSBuild (9s)
    [CoreCompile] Csc
    [RunCodeAnalysis] CodeAnalysis (8s)
    [StyleCop] StyleCopTask

这是一个简化的摘录,完整的日志长达数千行。无论如何,这些行表明在每个msbuild任务中花了多长时间(如果括号中的时间被省略,我理解这意味着它花了不到一秒钟)。

Teamcity是否可以在图表中绘制此信息,累积类似的任务?因此,对于上面的示例,图表将显示C#编译器为6秒,CodeAnalysis为19秒,StyleCop为9秒。

对于具有多个“构建步骤”的项目,Teamcity会在“PerfMon”选项卡下的表格中显示每个步骤所花费的时间。我喜欢。但我的项目是一个很长的“构建步骤”(msbuild)。我想知道时间花在它上面。

动机:我们的构建非常缓慢。我很好奇在样式警察和代码分析中花了多长时间,与实际编译代码相比(Csc是C#编译器)。

1 个答案:

答案 0 :(得分:3)

如果您对简单的控制台输出没问题,请尝试使用PerformanceSummary switch(/ clp:PerformanceSummary)调用MsBuild。

在构建结束时,它会输出如下所示的详细摘要。

   ...
   14 ms  SplitResourcesByCulture                    3 calls
   18 ms  ResolveProjectReferences                   3 calls
   22 ms  PostBuildEvent                             1 calls
   28 ms  CleanReferencedProjects                    3 calls
   48 ms  UpdateAssemblyInfo                         1 calls
   51 ms  CoreResGen                                 3 calls
   74 ms  CoreClean                                  3 calls
  103 ms  _CopyOutOfDateSourceItemsToOutputDirectory   2 calls
  177 ms  _CopyFilesMarkedCopyLocal                  3 calls
  293 ms  CheckPrerequisites                         3 calls
  327 ms  GenerateTemporaryTargetAssembly            1 calls
  329 ms  Clean                                      5 calls
  460 ms  MarkupCompilePass2                         1 calls
  627 ms  ResolveAssemblyReferences                  3 calls
  890 ms  RestorePackages                            3 calls
  891 ms  MarkupCompilePass1                         1 calls
  936 ms  CoreCompile                                4 calls
 4583 ms  Rebuild                                    4 calls
12133 ms  Setupkit                                   1 calls
24258 ms  CompileAndTest                             1 calls