Как вывести длительность определенных целей msbuild? - PullRequest
0 голосов
/ 16 ноября 2018

Сегодня я копирую / вставляю в каждую цель, которую я хочу измерить, и записываю ее продолжительность:

  <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 голосов
/ 17 ноября 2018

Рассматривали ли вы реализовать регистратор, который бы это сделал? См. http://msbuildlog.com для примера.

Вот документация о том, как реализовать свой собственный регистратор: https://docs.microsoft.com/en-us/visualstudio/msbuild/build-loggers?view=vs-2017

Если вы запустите msbuild.exe /bl, а затем откроете полученный .binlog в MSBuild Structured Log Viewer, он покажет продолжительность всех целей в представлении временной шкалы:

Timeline view

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...