В качестве эксперимента я попробовал это:
<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
.
От http://msdn.microsoft.com/en-us/library/t50z2hka.aspx: «Механизм MSBuild выполняет зависимости в том порядке, в котором они появляются в атрибуте DependsOnTargets, слева направо». –
Вы также можете увидеть полезный заказ выполнения на странице http://msdn.microsoft.com/en-us/library/ms171462.aspx в заголовке «Целевой заказ сборки». – ExecutionOrder