【问题标题】:Create a Branch Programmatically from C#从 C# 以编程方式创建分支
【发布时间】:2018-02-14 10:57:08
【问题描述】:

我的任务是从我们的 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 或库创建分支?如果是这样,请您指出正确的方向吗?

【问题讨论】:

    标签: c# azure-devops


    【解决方案1】:

    事实证明,此功能仅可通过 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 类文档。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-25
      • 2016-11-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      相关资源
      最近更新 更多