如何输出某些msbuild目标的持续时间?

时间:2018-11-16 20:26:44

标签: msbuild

今天,我在要测量的每个目标中复制/粘贴以下内容并记录其持续时间:

  <Target Name="YabaDabaDoo" ...>
    <PropertyGroup>
      <Start>$([System.DateTime]::Now.Ticks)</Start>
    </PropertyGroup>
    ...
    <PropertyGroup>
      <End>$([System.DateTime]::Now.Ticks)</End>
      <Ticks>$([MSBuild]::Subtract($(End), $(Start)))</Ticks>
      <Elapsed>$([MSBuild]::Divide($(Ticks), 10000000))</Elapsed>
    </PropertyGroup>
    <Message Text="Duration: $(Elapsed) seconds" Importance="High"/>
  </Target>

我不喜欢它,因为它太冗长,有时目标逻辑本身占用的空间比持续时间记录少。

有没有一种更简洁地实现它的方法?

1 个答案:

答案 0 :(得分:1)

您是否考虑过要实现此目的的记录器?有关示例,请参见http://msbuildlog.com

以下是有关如何实现自己的记录器的文档: https://docs.microsoft.com/en-us/visualstudio/msbuild/build-loggers?view=vs-2017

如果运行msbuild.exe /bl,然后在MSBuild结构化日志查看器中打开生成的.binlog,它将在时间轴视图中显示所有目标的持续时间:

Timeline view