从C#以编程方式创建分支

时间:2018-02-14 10:57:09

标签: c# azure-devops

我的任务是在C#应用程序中创建VSTS中的工作项和分支。我已经看到很多创建工作项的示例,我可以使用这些库(Microsoft.VisualStudio.Services.Client& Microsoft.TeamFoundationServer.Client)自己完成。到目前为止,我只看到一个在TFS 2013中创建分支的示例,但由于CreateBranch方法现已过时(根据文档),我无法跟进。我也无法在这些库中找到TeamFoundationServer类。

public void CreateBranchWithComment(string serverUrl, string sourcePath, string targetPath, string comment)
{
  var tfs = new TeamFoundationServer(serverUrl);
  var vcServer = (VersionControlServer)tfs.GetService(typeof(VersionControlServer));

  var changesetId = vcServer.CreateBranch(sourcePath, targetPath, VersionSpec.Latest);

  var changeset = vcServer.GetChangeset(changesetId);
  changeset.Comment = comment;
  changeset.Update();
}

是否仍然可以通过REST API或库创建分支?如果是这样,你能指出我正确的方向吗?

1 个答案:

答案 0 :(得分:0)

事实证明,此功能仅可从SOAP方法获得。当我阅读文档时,我错过了TfsTeamProjectCollection类。因为我只专注于REST API,所以我很少关注与SOAP方法和示例相关的任何内容。

根据文档,TeamFoundationServer类自Visual Studio 2010以来已过时,但CreateBranch方法仍可在VersionControlServer类中使用。

要检索VersionControlServer类的实例,必须从TfsTeamProjectCollection实例调用GetService。包括Microsoft.TeamFoundationServer.ExtendedClient Nuget包。

例如:

var server = new TfsTeamProjectCollection(accountUri, new VssBasicCredential(string.Empty, personalAccessToken));
var vcServer = server.GetService<VersionControlServer>();

/*
 * See documentation for this class at:
 * https://msdn.microsoft.com/en-us/library/microsoft.teamfoundation.versioncontrol.client.versioncontrolserver(v=vs.120).aspx
 */
var changesetId = vcServer.CreateBranch("$/Demo/Main","$/Demo/Dev/Branch", VersionSpec.Latest, null, "Branch Comment", null, null, null);

有关详细信息,请参阅TfsTeamProjectCollection类文档。