2011-10-12 63 views
1

我希望在調用MSBuild 3.5時輸出當前時間(最好在每個任務之前或者在最小時啓動/完成每個目標)。有沒有一種方法可以在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)). 

任何人都知道一個簡單的方法來實現這一目標?

回答

2

CallTarget不能執行同一個目標兩次,但沒有使用MSBuild任務是一個workaround

<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值設置爲每個後續調用不同的值。

相關問題