代码之家  ›  专栏  ›  技术社区  ›  Eugene Podskal

如何使用TFS客户端库获取PullRequest的web URL?

  •  1
  • Eugene Podskal  · 技术社区  · 6 年前

    是否有方法获取web URL(TeamWebAccess-like https://tfshost/tfs/Collection/Project/_git/Repository/pullrequest/12345 对于PR#12345,而不是API url)对于使用TFS的PullRequest client libraries ?

    var prId = 12345;
    var tpc = new TfsTeamProjectCollection(new Uri(""));
    var git = tpc.GetClient<GitHttpClient>();
    // GitHttpClient has no special methods to do it
    // and GitPullRequest obtained through GitHttpClient.GetPullRequestByIdAsync contains only the API link
    var prWebUrl = git.?????(prId);
    

    也许有类似的东西 TswaClientHyperlinkService 我错过了?

    或者我需要从API链接推断web URL/ GitPullRequest 财产?

    1 回复  |  直到 6 年前
        1
  •  3
  •   Cece Dong - MSFT    6 年前

    它不能得到 RemoteUrl 直接从客户端库中,因为值是 null . 查看以下屏幕截图:

    enter image description here

    但是你可以得到 远程URL 对于存储库( https://tfshost/tfs/Collection/Project/_git/Repository ),因此可以使用以下代码获取PR RemoteUrl:

    using Microsoft.TeamFoundation.SourceControl.WebApi;
    using Microsoft.VisualStudio.Services.Common;
    using Microsoft.VisualStudio.Services.WebApi;
    using System;
    
    namespace GetPullRequest
    {
        class Program
        {
            static void Main(string[] args)
            {
    
                String collectionUri = "https://xxx.visualstudio.com";
                VssBasicCredential creds = new VssBasicCredential("", "6ztnrtjdd3i42juchu4xxxxxxxxxaslnseo277tgiuiq");
                VssConnection connection = new VssConnection(new Uri(collectionUri), creds);
                var git = connection.GetClient<GitHttpClient>();
                var prId = 12345;
                var pr = git.GetPullRequestByIdAsync(prId).Result;
                var RepoUrl = pr.Repository.RemoteUrl;
                var prUrl = RepoUrl + "/pullrequest/" + prId;
                Console.WriteLine(prUrl);
    
            }
        }
    }