2009-07-21 20 views
4

我想在Ant的方式重用一個任務:如何動態定義屬性並將它們傳遞給msbuild中的另一個目標?

<Target Name="Release"> 
     <Message Text="Env: $(Env)"/> 
    </Target> 
    <Target Name="ReleaseIntegration"> 
    <CreateProperty Value="Development"> 
     <Output TaskParameter="Value" PropertyName="Env" /> 
    </CreateProperty> 
    <Message Text="Env: $(Env)"/> 
    <CallTarget Targets="Release"/> 
    </Target> 

我也得到:

Env: Development 
Env: 

任何想法如何得到這個屬性爲發行目標?

回答

6

有動態項和屬性的一個錯誤:

問題與不能夠訪問項目,並正在目標內創建屬性,直到目標執行實際完成

(更多信息here)。

解決方法很簡單:使用一個單獨的目標來創建屬性。

<Target Name="Release"> 
    <Message Text="Env: $(Env)"/> 
</Target> 

<Target Name="CreateProperty"> 
    <CreateProperty Value="Development"> 
    <Output TaskParameter="Value" PropertyName="Env" /> 
    </CreateProperty>  
</Target> 

<Target Name="ReleaseIntegration" DependsOnTargets="CreateProperty"> 
    <Message Text="Env: $(Env)"/> 
    <CallTarget Targets="Release"/> 
</Target> 

您將獲得:

Env: Development 
Env: Development 
相關問題