Skip to main content
 首页 » 编程设计

c#之如何使用 TFS 客户端库获取 PullRequest 的 Web URL

2024年02月25日40bjzhanghao

有没有办法获取 web URL(TeamWebAccess 像 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 链接/GitPullRequest 属性中推断 Web URL?

请您参考如下方法:

无法直接从客户端库获取RemoteUrl,因为值为null。检查下面的屏幕截图:

但您可以获得存储库的 RemoteUrl (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); 
 
        } 
    } 
}