2012-05-21 1 views
3

J'ai cette ligne dans mon script de constructionscripts MSBuild dependsOnTargets ordre d'exécution

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

Ce que je veux savoir est, dans cet exemple, quel ordre seront les cibles sont exécutées. De plus, si ServiceInstall a des dépendances, elles sont exécutées avant ou après SiteTransfer. En d'autres termes, l'exécution est-elle faite en profondeur d'abord ou en largeur d'abord?

Merci,

Sachin

Répondre

4

Comme une expérience que j'ai essayé ceci:

<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> 

et ce fut la sortie:

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

Cependant, je soupçonne que la séquence exacte est indéfini. Il n'est pas documenté sur msdn. En d'autres termes, msbuild garantit uniquement que les contraintes que vous spécifiez sont satisfaites. Si vous devez garantir SitesTransfer et que ses dépendances sont exécutées avant ServicesInstall, vous devez faire ServicesInstall en fonction de SitesTransfer.

+7

De http://msdn.microsoft.com/en-us/library/t50z2hka.aspx: "Le moteur MSBuild exécute les dépendances dans l'ordre dans lequel elles apparaissent dans l'attribut DependsOnTargets, de gauche à droite." –

+0

Vous pouvez également voir un ordre d'exécution utile à l'adresse http://msdn.microsoft.com/fr-fr/library/ms171462.aspx, sous l'en-tête «Ordre de construction cible». – ExecutionOrder

Questions connexes