Есть ли способ легко вывести текущее время в MSBuild (версия 3.5)? - PullRequest
2 голосов
/ 13 октября 2011

Я хотел бы вывести текущее время (желательно перед каждой задачей или минимум при запуске / завершении каждой цели) при вызове MSBuild 3.5.

Я попытался создать цель, которую я бы постоянно вызывал, которая выглядитнапример:

<Target Name="EchoTime">
    <Time Format="yyyy-MM-dd HH:mm:ss.fff">
        <Output TaskParameter="FormattedTime" PropertyName="currentTime" />
    </Time>
    <Message Text = "$(currentTime)" />
</Target>

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

Так что, если я попытаюсь ...

<Target Name="TimeTest" >
    <Message Text = "--------------------------------------------------" />
    <CallTarget Targets="EchoTime" />
    <Message Text = " " />
    <Message Text = "Try calling EchoTime again" />
    <Message Text = " " />
    <CallTarget Targets="EchoTime" />
    <Message Text = "--------------------------------------------------" />
</Target>

Тогда результат выглядит как ...

Build started 10/12/2011 2:24:52 PM.
Project "C:\Temp\MSBuildSandbox\MSBuild_EchoTime.xml" on node 0 (TimeTest target(s)).
  --------------------------------------------------
EchoTime:
  2011-10-12 14:24:52.756
TimeTest:

  Try calling EchoTime again

  --------------------------------------------------
Done Building Project "C:\Temp\MSBuildSandbox\MSBuild_EchoTime.xml" (TimeTest target(s)).

Кто-нибудь знает простой способ добиться этого?

1 Ответ

2 голосов
/ 13 октября 2011

CallTarget не может выполнить одну и ту же цель дважды, но есть обходной путь с использованием задачи MSBuild:

<Target Name="TimeTest" >
    <Message Text = "--------------------------------------------------" />
    <MSBuild 
        Targets="EchoTime" 
        Projects="$(MSBuildProjectFile)" 
        Properties="prop1=val1" 
    />
    <Message Text = " " />
    <Message Text = "Try calling EchoTime again" />
    <Message Text = " " />
    <MSBuild 
        Targets="EchoTime" 
        Projects="$(MSBuildProjectFile)" 
        Properties="prop1=val2" 
    />
 <Message Text = "--------------------------------------------------" />
</Target>

Обратите внимание, что для prop1 установлено другое значениеза каждый последующий звонок.

...