解释MSBuild性能摘要输出

解释MSBuild性能摘要输出,msbuild,Msbuild,我试图理解MSBuild的一些性能摘要输出。结果如下所示: Target Performance Summary: 0 ms PrepareForRun 74 calls 0 ms Compile 74 calls ... ... ... ... 15173 ms

我试图理解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秒。我在网上看到的这些摘要的任何示例都表明,总任务时间和目标时间是相同的。

MSBuild和CallTarget任务调用其他目标(从而调用其他任务)。在这些任务中花费的时间也会根据MSBuild和CAllTarget任务计算。一只虫子,真的


因此,在读取这些数据时,始终忽略这两项任务。其他任务的总和应略小于总生成时间。

MSBuild和CallTarget任务调用其他目标(以及其他任务)。在这些任务中花费的时间也会根据MSBuild和CAllTarget任务计算。一只虫子,真的


因此,在读取这些数据时,始终忽略这两项任务。其他任务的总和应该比总生成时间少一点。

ResolveAssemblyReferences(RAR)和ResolveCOMReferences(RCR)通常花费最多的时间。@RitchMelton实际上,它们不会。我已经为这些目标添加了跟踪功能(通过直接修改Microsoft目标),它们表明RAR只需很少的时间,而在我看来,整个报告过程似乎都是中断的……它们过去是这样的。显然如此。如果它神奇地改变了,我会很惊讶。为什么不做一个诊断呢?它的工作原理是一样的。说这不是错误的信息。ResolveAssemblyReferences(RAR)和ResolveCOMReferences(RCR)通常花费的时间最多。@RitchMelton事实上,它们不会。我已经为这些目标添加了跟踪功能(通过直接修改Microsoft目标),它们表明RAR只需很少的时间,而在我看来,整个报告过程似乎都是中断的……它们过去是这样的。显然如此。如果它神奇地改变了,我会很惊讶。为什么不做一个诊断呢?它的工作原理是一样的。说这不只是坏消息。