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

如何通过C#调用Azure DevOps REST API获取commit中变更的文件列表

解决方案说明

你之前调用的构建附件接口用途不匹配,该接口仅用于获取构建运行过程中上传的自定义附件,不包含commit关联的变更文件信息,返回空属于预期结果。


正确实现方案

1. 接口选择

要获取指定commit的变更文件列表,需使用Git Commits相关的查询接口,可直接通过Azure DevOps官方客户端库调用。

2. 环境准备

先安装两个必要NuGet包:

  • Microsoft.TeamFoundationServer.Client
  • Microsoft.VisualStudio.Services.Client

3. C#代码示例

using Microsoft.TeamFoundation.SourceControl.WebApi;
using Microsoft.VisualStudio.Services.Common;
using Microsoft.VisualStudio.Services.WebApi;

// 初始化Azure DevOps连接
var credentials = new VssBasicCredential(string.Empty, "你的个人访问令牌(PAT)");
var devOpsConnection = new VssConnection(new Uri("https://dev.azure.com/你的组织名称"), credentials);
var gitClient = devOpsConnection.GetClient<GitHttpClient>();

// 传入项目名、仓库ID、目标commit的SHA值查询变更
var commitChangeResult = await gitClient.GetChangesAsync("你的项目名称", "目标仓库ID", "目标commit的SHA值");

// 遍历输出所有变更文件
foreach (var change in commitChangeResult.Changes)
{
    Console.WriteLine($"变更类型:{change.ChangeType},文件路径:{change.Item.Path}");
}

注意:不推荐使用.Result同步调用异步方法,容易引发线程死锁,建议统一使用await做异步调用。

4. 其他说明

  • 个人访问令牌(PAT)需要提前授予Code (Read)权限
  • 若不知道仓库ID,可先调用gitClient.GetRepositoriesAsync("你的项目名称")查询项目下所有仓库的ID信息
  • 若你需要查询某次构建关联的所有commit的变更,可先调用构建接口获取该次构建关联的全部commit SHA值,再逐个查询变更文件

内容的提问来源于stack exchange,提问作者Spartan87

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 13:06:04