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

3
有没有办法使用TFS 客户端库获取PullRequest的Web URL(类似于https://tfshost/tfs/Collection/Project/_git/Repository/pullrequest/12345,而不是API url)?
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链接/GitPullRequest属性推断Web URL?
1个回答

6
无法直接从客户端库目录中获取RemoteUrl,因为该值为null。请参考下面的截图:

enter image description here

但是,您可以获取存储库(https://tfshost/tfs/Collection/Project/_git/Repository)的RemoteUrl,因此您可以使用以下代码获取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);

        }
    }
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接