This article will help when you want to copy an existing Build definition from Project A to Project B.
As shown in the following figure:
The following is the piece of code to perform the task to copy a Build Definition from one project to another project.
- Add the following references to your project:
You can get these references from your system at the location: <C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\ReferenceAssemblies\v2.0>.
- The piece of code to perform the copy of the builds definition:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//Add this NameSpace to work on TFS api
using Microsoft.TeamFoundation.Client;
using Microsoft.TeamFoundation.Build.Client;
//Author: Md. Jawed
//Dated: 01.05.2010
//Discription:Programmaticaly copy Build Definition from one project to another project using TFS API.
namespace TFSAPI
{
class Program
{
/// <summary>
/// This Main would copy the Build definition from project "A" to Project "B" with in the same TFS.
///</summary>
///<param name="args"></param>
staticvoid Main(string[] args)
{
try
{
//Connect to your TFS
var server =TfsTeamProjectCollectionFactory.GetTeamProjectCollection(new
Uri("http://tfs:8080/tfs/defaultcollection"));
IBuildServer buildServer = server.GetService<IBuildServer>();
//Get all Build from ALM project
var buildDetails = buildServer.QueryBuildDefinitions("Project1");
foreach (var build in buildDetails)
{
if (build.Name=="DemoBuildDefinition")
{
var buildDefinition = buildServer.CreateBuildDefinition("Project2");
buildDefinition.Name = "Copy of " + build.Name;
buildDefinition.BuildController = build.BuildController;
// This finds the template to use
buildDefinition.Process = buildServer.QueryProcessTemplates("Project2")[0];
buildDefinition.ProcessParameters = build.ProcessParameters;
buildDefinition.Save();
}//end of if block
}//end of for each loop
}//end of try
catch (Exception exception)
{
Console.WriteLine(exception.Message);
}//end of catch
}//end of main
}//end of class
}//end of name space