You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Azure DevOps调用GetPullRequestStatusesAsync查询PR状态返回空问题

问题根因

你调用的GetPullRequestStatusesAsync接口用途和你的需求完全不匹配:该接口仅返回PR关联的附加状态检查结果,比如CI构建结果、代码合规扫描结果这类自定义配置的检查项。如果仓库没有给PR配置这类检查规则,无论PR本身处于什么生命周期,该接口的返回结果都会是空数组。

正确判断PR状态的方案

你需要先获取PR的基础信息对象,再通过对象自带的状态属性判断所属类型:

  • 首先读取PR对象的Status属性,对应PullRequestStatus枚举,可直接识别三类核心状态:
    • Abandoned:已废弃/已关闭
    • Completed:已合并
    • Active:处于开放流程中
  • 当Status为Active时,再读取MergeStatus属性,对应PullRequestAsyncStatus枚举,进一步细分状态:
    • Conflicts:存在合并冲突
    • Queued/InProgress:合并流程处理中
    • Succeeded:无冲突,正常待评审/待合入
修正后的测试代码
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;
using Microsoft.TeamFoundation.SourceControl.WebApi;

var collection = "https://myurl";
var project = "pro";
var repo = "repo";

var codepat = Environment.GetEnvironmentVariable("code_pat");
if (codepat.IsNullOrEmpty()) { throw new Exception($"code_pat must be set in the environment."); }

var creds = new VssBasicCredential(string.Empty, codepat);
var conn = new VssConnection(new Uri(collection), creds);
using var gitClient = conn.GetClient<GitHttpClient>();
var srcRepo = gitClient.GetRepositoryAsync(project, repo).Result;

int[] prids = { 2345, 3254, 7645, 1357 };

foreach(var id in prids)
{
    Console.WriteLine($"id: {id}");
    // 获取PR完整基础信息
    var pr = gitClient.GetPullRequestAsync(srcRepo.Id, id).Result;
    
    string prStatusDesc = pr.Status switch
    {
        PullRequestStatus.Abandoned => "已废弃/已关闭",
        PullRequestStatus.Completed => "已合并",
        PullRequestStatus.Active => pr.MergeStatus switch
        {
            PullRequestAsyncStatus.Conflicts => "活跃-存在合并冲突",
            PullRequestAsyncStatus.Queued or PullRequestAsyncStatus.InProgress => "合并中",
            PullRequestAsyncStatus.Succeeded => "活跃-无冲突待处理",
            _ => "活跃-合并状态未知"
        },
        _ => "未知状态"
    };
    Console.WriteLine($"- 状态:{prStatusDesc}");
    Console.WriteLine();
}

内容的提问来源于stack exchange,提问作者B.McKee

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 06:01:20