MSBuild脚本dependsOnTargets执行顺序

时间:2012-05-21 15:59:17

标签: msbuild

我的构建脚本中有这一行

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

我想知道的是,在这个例子中,目标的执行顺序是什么。此外,如果ServiceInstall具有依赖关系,则会在SiteTransfer之前或之后执行它们。换句话说,是以深度优先或广度优先的方式完成执行?

谢谢,

萨钦

1 个答案:

答案 0 :(得分: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