2012-05-21 90 views
3

的順序我有這條線在我的構建腳本的MSBuild腳本dependsOnTargets執行

<Target Name="Deploy" DependsOnTargets="ServicesInstall;SitesTransfer" > 

我想知道的是,在這個例子中,將目標得到執行順序。另外,如果ServiceInstall具有依賴項,它們會在SiteTransfer之前或之後執行。換句話說,是以深度優先還是寬度優先的方式完成執行?

感謝,

薩欽

回答

4

作爲一個實驗我嘗試這樣做:

<Target Name="Deploy" DependsOnTargets="ServicesInstall;SitesTransfer" /> 
<Target Name="ServicesInstall" DependsOnTargets="ServicesInstallDependency"> 
    <Message Text="ServicesInstall" /> 
</Target> 
<Target Name="ServicesInstallDependency"> 
    <Message Text="ServicesInstallDependency" /> 
</Target> 
<Target Name="SitesTransfer"> 
    <Message Text="SitesTransfer" /> 
</Target> 

,這是輸出:

... 
1>ServicesInstallDependency: 
1> ServicesInstallDependency 
1>ServicesInstall: 
1> ServicesInstall 
1>SitesTransfer: 
1> SitesTransfer 
... 

不過,我懷疑確切順序未定義。它沒有記錄在msdn上。

換句話說,msbuild只會保證您指定的約束條件得到滿足。如果您需要保證SitesTransfer及其依賴關係在ServicesInstall之前執行,則應使ServicesInstall取決於SitesTransfer

+7

From http://msdn.microsoft.com/en-us/library/t50z2hka.aspx:「MSBuild引擎按照它們出現在DependsOnTargets屬性中的順序執行依賴項,從左到右。」 –

+0

您還可以在「目標構建訂單」標題下的http://msdn.microsoft.com/en-us/library/ms171462.aspx上看到有用的執行順序。 – ExecutionOrder