2

我想在调用 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)).

有谁知道实现这一目标的简单方法?

4

1 回答 1

2

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为每个后续调用设置不同的值。

于 2011-10-12T23:32:37.767 回答