我最近開始在使用MSBuild管理我的任務的門控簽入期間自定義我的構建活動。它工作比較好。 但問題是:任務工作流程完全基於以前關於任務執行時間到optime並行性能的知識。下面是我的工作流的恢復版本,這樣你就可以明白這個問題如何處理TF Build 2012中的多個常見依賴項?
- 兩個主要目標:執行一些測試和驗證數據庫遷移
- 要執行的測試,我來構建解決方案,建立數據庫項目和發佈數據庫
- 驗證數據庫遷移我還需要構建和發佈數據庫(不能與測試執行時相同)並需要做一些「額外的工作」。
爲了優化我的工作流程,我想同時運行解決方案的構建,「額外的東西」和數據庫的構建/發佈,但我不想混用不必要的依賴關係,比如數據庫遷移等待解決方案的構建或測試執行等待「額外的東西」。
在的MSBuild和WWF4我只知道如何在一個回合,然後執行另一套依賴執行所有依賴於並行活動...
是否有這樣做的更好的辦法?我的意思是,定義工作流程以便自動解析和優化依賴關係。
P.S:我使用的是2012年的TFS
UPDATE: 我做了一個測試建立我的項目解決方案的兩倍並行看看會發生什麼。發現一個MSBuild節點在嘗試構建我的解決方案之前等待另一個完成,然後說它是最新的。例:
<Project>
<ItemGroup>
<Project Include="MyProject.sln" />
<Project Include="MyProject.sln" />
</ItemGroup>
<Target Name="Build">
<MSBuild Projects="@(Project)" Targets="Build" BuildInParallel="true" />
</Target>
</Project>
<!-- When I check the build log it says
1> Project is building MyProject.sln (2) ...
1> Project is building MyProject.sln (2:2) ...
2> Building with tools...
2> ...
2:2> Building with tools...
2> ...
2> ...
2> ...
2> Done building
2:2> Target ... skipped because it was previously built successfully
2:2> Done building
-->
這是一個期望的行爲,但是當我試圖依靠這使我的工作流程建設,我的項目,同時內置兩次,給了我很多的錯誤。
在發佈管理我可以管理,因爲它們都內置部署組件?或者,我是否必須在開始發佈前等待他們全部構建? –