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

Azure DevOps多仓库C#项目包依赖报告生成:API问题与方案咨询

问题:获取Azure DevOps仓库中C#项目的包引用及版本并生成报告

我需要生成一份报告,详细列出Azure DevOps中多个仓库里C#项目使用的NuGet包及其版本。我的思路是:

  1. 用Azure DevOps代码搜索查找所有包含<PackageReference Include="的实例;
  2. 解析这些内容提取包名和版本;
  3. 生成报告。

我找到了Azure DevOps的Code Search Results API,但这个API只返回匹配的位置信息,不返回具体的匹配代码行,示例响应如下:

"matches": {
    "content": [
        {
            "charOffset": 615,
            "length": 3,
            "line": 0,
            "column": 0,
            "codeSnippet": null,
            "type": "content"
        }
    ],

请问有没有其他API可以获取匹配的代码行?如果没有,有没有更优的实现方案?


解决方案

一、关于获取匹配代码行的API

目前Azure DevOps的Code Search Results API确实不会返回完整的匹配代码行,若要获取具体代码内容,可使用Git Items API配合搜索结果里的仓库、路径、行号信息来拉取对应文件内容:

  • 先用Code Search API拿到匹配项所在的仓库ID、文件路径、行号;
  • 再调用Git Items API获取该文件的原始内容,根据行号提取对应的代码行。

不过这个方法需要额外的API调用,处理大量匹配时会增加请求次数。

二、更优的实现方案

1. 批量拉取配置文件+本地解析

利用Azure DevOps工具批量获取仓库中的项目配置文件,再本地解析:

  • 批量克隆目标仓库,或仅下载所有.csproj、Directory.Build.props、NuGet.config等配置文件;
  • 编写脚本(如PowerShell、Python)遍历这些文件,通过正则或XML解析提取<PackageReference>节点的包名与版本信息。

这种方式能覆盖所有包引用场景,包括集中管理的版本、间接引用等。

2. 利用dotnet list package命令

若能在本地或CI环境执行命令,可针对每个仓库运行:

dotnet list package --include-transitive --format json

该命令会输出项目所有直接/间接引用的NuGet包及版本,输出为JSON格式,方便直接解析生成报告。配合脚本可批量遍历多个仓库执行此操作。

3. 依赖Analytics API(大规模场景)

针对企业级大规模仓库,可配置仓库依赖扫描后,利用Analytics API获取项目依赖数据,适合长期依赖监控,而非一次性报告。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:58:34