我的构建脚本中有这一行
<Target Name="Deploy" DependsOnTargets="ServicesInstall;SitesTransfer" >
我想知道的是,在这个例子中,目标的执行顺序是什么。此外,如果ServiceInstall具有依赖关系,则会在SiteTransfer之前或之后执行它们。换句话说,是以深度优先或广度优先的方式完成执行?
谢谢,
萨钦
答案 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
。