今天,我在要测量的每个目标中复制/粘贴以下内容并记录其持续时间:
<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>
我不喜欢它,因为它太冗长,有时目标逻辑本身占用的空间比持续时间记录少。
有没有一种更简洁地实现它的方法?
答案 0 :(得分:1)
您是否考虑过要实现此目的的记录器?有关示例,请参见http://msbuildlog.com。
以下是有关如何实现自己的记录器的文档: https://docs.microsoft.com/en-us/visualstudio/msbuild/build-loggers?view=vs-2017
如果运行msbuild.exe /bl
,然后在MSBuild结构化日志查看器中打开生成的.binlog,它将在时间轴视图中显示所有目标的持续时间: