解释 MSBuild 性能摘要输出
Posted
技术标签:
【中文标题】解释 MSBuild 性能摘要输出【英文标题】:Interpreting MSBuild Performance Summary Output 【发布时间】:2010-07-28 14:39:43 【问题描述】:我正在尝试了解 MSBuild 的一些性能摘要输出。结果如下所示:
Target Performance Summary:
0 ms PrepareForRun 74 calls
0 ms Compile 74 calls
...
...
...
...
15173 ms ResolveProjectReferences 74 calls
29607 ms Build 75 calls
Task Performance Summary:
2 ms CreateCSharpManifestResourceName 6 calls
2 ms ResolveKeySource 1 calls
...
...
...
...
3623 ms Copy 511 calls
7468 ms ResolveAssemblyReference 74 calls
11234 ms Exec 12 calls
48600 ms MSBuild 210 calls
Build succeeded.
0 Warning(s)
0 Error(s)
Time Elapsed 00:00:29.60
为什么 MSBuild 的总时间超过了总运行时间?实际上,运行此构建的实际秒表时间约为 29 秒。我在网上看到的这些摘要的任何示例都表明,总任务和目标时间是相同的。
【问题讨论】:
ResolveAssemblyReferences(RAR) 和 ResolveCOMReferences (RCR) 通常花费的时间最多。 @RitchMelton 实际上,他们没有。我已经添加了对这些目标的跟踪(通过直接修改 Microsoft 目标),它们显示 RAR 花费的时间很少。整个时间报告对我来说似乎被打破了...... 他们曾经。显然如此。如果它神奇地改变了,我会感到惊讶。 为什么不做一个诊断? 它的工作原理是一样的。说它不是只是坏信息。 【参考方案1】:MSBuild 和 CallTarget 任务调用其他目标(以及其他任务)。在这些任务中花费的时间也计入 MSBuild 和 CAllTarget 任务。一个错误,真的。
因此,在读取此数据时,请始终忽略这两个任务。其他任务的总和应该比总构建时间少一点。
【讨论】:
以上是关于解释 MSBuild 性能摘要输出的主要内容,如果未能解决你的问题,请参考以下文章
MSBuild:如何将文件复制到由执行命令的输出确定的 DestinationFolder?