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

寻求可集成CI构建流程的NuGet包文档化工具

提取CI构建中NuGet包信息到Markdown文件的可行方案

以下是几种实用的方案,可直接集成到CI/构建流程中,提取NuGet包信息并生成Markdown格式文件,纳入构建历史体系:

一、使用.NET CLI原生命令(无额外工具依赖)

这是最轻量化的方案,适合大多数.NET项目:

  1. 提取原始包信息
    在构建完成后,执行命令获取解决方案的NuGet依赖(包含间接依赖可加--include-transitive):
    dotnet list YourSolution.sln package --include-transitive > nuget-packages-temp.txt
    
  2. 转换为Markdown表格
    写一段简单的脚本处理临时文本,生成规范的Markdown表格。示例PowerShell脚本:
    $rawContent = Get-Content nuget-packages-temp.txt
    $mdOutput = "## 构建依赖NuGet包列表`n`n| 包名称 | 使用版本 |`n|--------|----------|"
    
    foreach ($line in $rawContent) {
        # 匹配包名和版本的格式(适配dotnet list的输出)
        if ($line -match '^\s*(?<pkg>[^ ]+)\s*(?<ver>[^ ]+)') {
            $mdOutput += "`n| $($matches.pkg) | $($matches.ver) |"
        }
    }
    
    $mdOutput | Out-File -Encoding UTF8 nuget-packages.md
    
    执行脚本后即可得到Markdown格式的包列表文件。

二、用NuGet CLI + 脚本转换(兼容传统.NET项目)

如果你的项目使用传统NuGet CLI管理依赖,可先导出CSV格式再转Markdown:

  1. 导出CSV格式依赖
    nuget list solution YourSolution.sln -AllVersions -OutputFormat csv > nuget-packages.csv
    
  2. CSV转Markdown
    用Python快速转换(需CI环境预装Python和pandas):
    import pandas as pd
    df = pd.read_csv("nuget-packages.csv")
    df.to_markdown("nuget-packages.md", index=False, tablefmt="github")
    

三、CI流程集成与构建历史整合

示例:GitHub Actions集成

在构建工作流中加入提取和存储步骤,将Markdown文件作为构建产物保存:

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      # 省略拉取代码、构建项目的步骤...
      
      - name: 提取NuGet包信息并生成Markdown
        run: |
          dotnet list YourSolution.sln package --include-transitive > nuget-packages-temp.txt
          # 用Bash脚本转换(Linux runner)
          echo -e "## 构建依赖NuGet包列表\n\n| 包名称 | 使用版本 |\n|--------|----------|" > nuget-packages.md
          grep -E '^\s*[a-zA-Z0-9.-]+\s+[0-9.]+' nuget-packages-temp.txt | while read -r line; do
            pkg=$(echo "$line" | awk '{print $1}')
            ver=$(echo "$line" | awk '{print $2}')
            echo "| $pkg | $ver |" >> nuget-packages.md
          done
      
      - name: 上传包信息到构建产物
        uses: actions/upload-artifact@v4
        with:
          name: build-${{ github.run_id }}-nuget-info
          path: nuget-packages.md

构建历史持久化

  • CI平台存储:直接利用CI平台的构建产物存储功能(如GitHub Actions Artifacts、Azure DevOps Artifacts),每个构建版本对应一份NuGet包信息,可随时回溯。
  • 代码库同步:将生成的Markdown文件提交到项目仓库的build-history目录,形成可追溯的历史记录:
    git config user.name "CI自动化机器人"
    git config user.email "ci-bot@your-domain.com"
    mkdir -p build-history/${{ github.run_id }}
    cp nuget-packages.md build-history/${{ github.run_id }}/
    git add build-history/
    git commit -m "添加构建${{ github.run_id }}的NuGet包信息"
    git push
    

注意事项

  • 确保脚本适配你的CI环境(Windows/Linux/macOS),调整正则或命令格式。
  • 若只需直接依赖,去掉--include-transitive参数即可。
  • 可添加过滤逻辑,排除不需要的系统包或测试包。

内容的提问来源于stack exchange,提问作者Ola Eldøy

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 05:55:45