寻求可集成CI构建流程的NuGet包文档化工具
提取CI构建中NuGet包信息到Markdown文件的可行方案
以下是几种实用的方案,可直接集成到CI/构建流程中,提取NuGet包信息并生成Markdown格式文件,纳入构建历史体系:
一、使用.NET CLI原生命令(无额外工具依赖)
这是最轻量化的方案,适合大多数.NET项目:
- 提取原始包信息
在构建完成后,执行命令获取解决方案的NuGet依赖(包含间接依赖可加--include-transitive):dotnet list YourSolution.sln package --include-transitive > nuget-packages-temp.txt - 转换为Markdown表格
写一段简单的脚本处理临时文本,生成规范的Markdown表格。示例PowerShell脚本:
执行脚本后即可得到Markdown格式的包列表文件。$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
二、用NuGet CLI + 脚本转换(兼容传统.NET项目)
如果你的项目使用传统NuGet CLI管理依赖,可先导出CSV格式再转Markdown:
- 导出CSV格式依赖
nuget list solution YourSolution.sln -AllVersions -OutputFormat csv > nuget-packages.csv - 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
相关产品推荐
相关产品推荐

