有什麼方法可以複製構建定義?我使用主線源控制方法,利用許多不同的分支來生活很短的時間(即幾天到一週)。我真的很想複製一個構建模板,只需更改要構建的解決方案即可。有沒有辦法做到這一點?如何複製TFS 2010構建定義?
回答
你可以寫一個加載項來做到這一點。下面是複製現有構建定義的代碼:
static IBuildDefinition CloneBuildDefinition(IBuildDefinition buildDefinition)
{
var buildDefinitionClone = buildDefinition.BuildServer.CreateBuildDefinition(
buildDefinition.TeamProject);
buildDefinitionClone.BuildController = buildDefinition.BuildController;
buildDefinitionClone.ContinuousIntegrationType = buildDefinition.ContinuousIntegrationType;
buildDefinitionClone.ContinuousIntegrationQuietPeriod = buildDefinition.ContinuousIntegrationQuietPeriod;
buildDefinitionClone.DefaultDropLocation = buildDefinition.DefaultDropLocation;
buildDefinitionClone.Description = buildDefinition.Description;
buildDefinitionClone.Enabled = buildDefinition.Enabled;
buildDefinitionClone.Name = String.Format("Copy of {0}", buildDefinition.Name);
buildDefinitionClone.Process = buildDefinition.Process;
buildDefinitionClone.ProcessParameters = buildDefinition.ProcessParameters;
foreach (var schedule in buildDefinition.Schedules)
{
var newSchedule = buildDefinitionClone.AddSchedule();
newSchedule.DaysToBuild = schedule.DaysToBuild;
newSchedule.StartTime = schedule.StartTime;
newSchedule.TimeZone = schedule.TimeZone;
}
foreach (var mapping in buildDefinition.Workspace.Mappings)
{
buildDefinitionClone.Workspace.AddMapping(
mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
}
buildDefinitionClone.RetentionPolicyList.Clear();
foreach (var policy in buildDefinition.RetentionPolicyList)
{
buildDefinitionClone.AddRetentionPolicy(
policy.BuildReason, policy.BuildStatus, policy.NumberToKeep, policy.DeleteOptions);
}
return buildDefinitionClone;
}
從您的消息中不清楚哪個模板是您的構建定義使用(默認,升級或實驗室管理)。如果我理解正確,您希望輕鬆設置一個構建定義,該構建定義構建了相同的解決方案,但來自不同的分支。
有一件事,你可以嘗試,而不是複製定義是編輯它。當分支死亡時,重命名構建定義(可能有助於報告),更改構建的工作區映射,您應該完成。
謝謝,拉迪斯勞
我只是需要複製構建定義,並發現上面的Jim的回答會有幫助。然而,作爲TFS API的新手,我需要幫助連接到服務器並通過代碼獲取現有的構建定義。這兩個環節上幫助填補空白:
我結束了使用TFS電動工具2010年9月,其含有克隆構建定義命令。 – devlife 2010-11-03 22:47:11
您也可以下載新的TFS 2010 power tools。它可以選擇克隆構建定義。
爲例見http://msmvps.com/blogs/molausson/archive/2010/10/21/clone-a-build-definition.aspx
注:請注意,克隆只能當你沒有彈出生成窗口。
您可以右鍵單擊構建定義並選擇「克隆構建定義」來複制定義文件。然後你可以從那裏編輯它。
以下工具(VS加載項),將滿足您的要求>
社區TFS構建經理
http://visualstudiogallery.msdn.microsoft.com/16bafc63-0f20-4cc3-8b67-4e25d150102c
這裏是soltion,如果你想生成定義從一個團隊項目移到其他團隊項目。
public void MoveBuild(string fromTeamProject, string toTeamProject, string buildName, string newBuildName)
{
var _server = TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new
Uri("http://Mytfs:8080/defaultcollection"));
IBuildServer _buildServer = _server.GetService<IBuildServer>();
var buildDetails = _buildServer.QueryBuildDefinitions(fromTeamProject);
foreach (var fromBuild in buildDetails)
{
if (fromBuild.Name != buildName) continue;
var newBuildDefinition = _buildServer.CreateBuildDefinition(toTeamProject);
newBuildDefinition.Name = !string.IsNullOrEmpty(newBuildName) ? newBuildName : fromBuild.Name;
newBuildDefinition.BuildController = fromBuild.BuildController;
// This finds the template to use
foreach (var mapping in fromBuild.Workspace.Mappings)
{
newBuildDefinition.Workspace.AddMapping(
mapping.ServerItem, mapping.LocalItem, mapping.MappingType, mapping.Depth);
}
newBuildDefinition.DefaultDropLocation = fromBuild.DefaultDropLocation;
newBuildDefinition.Description = fromBuild.Description;
// buildDefinition.Workspace.AddMapping(build.Workspace.);
newBuildDefinition.Process = _buildServer.QueryProcessTemplates(fromBuild)[2];
newBuildDefinition.ProcessParameters = fromBuild.ProcessParameters;
newBuildDefinition.Enabled = false;
newBuildDefinition.Save();
}//end of for each loop
}
- 1. TFS 2010在TFS 2010中構建定義
- 2. TFS 2010構建定義 - 複製依賴到構建目標文件夾
- 3. 在TFS 2010中編輯構建定義
- 4. 生成tfs 2010的構建定義
- 5. TFS 2010跟蹤構建定義更改?
- 6. 自定義構建摘要TFS 2010
- 7. 導出TFS 2010構建定義
- 8. 定製TFS 2010構建過程
- 9. TFS 2010定製構建步驟
- 10. Windows Azure TFS構建定義「複製構建輸出...」#/問題
- 11. TFS構建2010年 - 自定義二進制位置和SharePoint WSP
- 12. 如何在TFS 2010中調試自定義構建過程?
- 13. Tfs構建定義
- 14. 使用TFS 2010運行TFS 2008構建定義
- 15. TFS 2010構建:Microsoft.TeamFoundation.Build.Workflow.Activities.SyncWorkspace
- 16. 如何解決TFS 2010構建通知
- 17. 創建TFS 2010構建定義需要幫助
- 18. TFS 2010 Build定義
- 19. TFS構建定義問題
- 20. 如何將TFS構建定義移動/複製到新的團隊項目?
- 21. TFS 2010構建時機
- 22. TFS 2010構建服務
- 23. 如何設置TFS 2013構建定義從Git標記構建?
- 24. 關於TFS 2010中的構建定義文件(XAML)
- 25. TFS 2010在構建定義文件中隱藏 - 錯誤
- 26. TFS 2010構建定義只輸出DLL和PDB?
- 27. 在一個單一的構建定義TFS 2010
- 28. 是否可以導出TFS 2010構建定義?
- 29. 如何將多個TFS 2012構建定義鏈接到一個構建定義
- 30. 將TFS 2013 xaml構建定義轉換爲TFS 2015 vNext構建
在linqpad,真棒得到了這個工作=) – Maslow 2014-02-11 20:07:07