关于 outdated
outdated 是面向 .NET 开发者的依赖审计技能,用于评估软件包状况。它整合包清单、版本与漏洞检查以及许可证筛查,并生成按优先级排列的报告。
主要功能
- 01按项目盘点软件包
- 02检查过时和易受攻击的包
- 03标记即将发生的许可证变化
- 04按优先级列出问题及行动
- 05更新后验证构建
适用场景
- 01.NET 升级前审计依赖
- 02检查继承而来的解决方案
- 03调查 NuGet 审计警告
- 04逐个规划软件包更新
MCP 相关
使用 get_nuget_packages MCP 工具盘点软件包,并识别集中包管理和目标框架。更新后还可通过 get_diagnostics 检查解决方案。
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ codewithmukesh/ dotnet-claude-kit --skill outdated安装后在 Claude Code 中输入/outdated确认已加载。
详细介绍
/outdated
内容
三层依赖健康报告:
- 清单 — 通过
get_nuget_packagesMCP 工具列出每个项目的所有PackageReference,并识别 TFM 和中央包管理情况(无需网络,消耗的令牌少)。 - 过时情况 + 漏洞 — 通过
dotnetCLI 检查当前版本与最新稳定版的差异,以及已知 CVE。 - 许可证筛查 — 标记转为商业许可证的包,避免无意执行
dotnet outdated --upgrade后在不知情的情况下改变法律立场。
输出为一张按优先级排列的表格——漏洞优先,其次是许可证陷阱,最后是过时情况——每行都附有建议操作。
适用场景
- “检查过时的包”“包审计”“依赖健康”
- 升级 .NET 版本之前(配合
/migrate流程 B) - 接手不熟悉的代码库之后
- 出现 Dependabot/NuGet 审计警告,并且你想了解全貌
- 对长期维护的项目进行定期检查——每季度一次是不错的频率
操作方法
步骤 1:清点(MCP,无需网络)
get_nuget_packages() -- whole solution
get_nuget_packages(projectFilter: "Api") -- or one project
按项目返回 {Name, TargetFramework, Cpm, Packages: [{Id, Version}]}。
注意 Cpm: true——此时更新应放在 Directory.Packages.props 中,而不是 csproj。也请借此标记各项目之间混用的 TFM。
步骤 2:检查过时情况和漏洞(CLI)
dotnet list package --outdated
dotnet list package --vulnerable --include-transitive
两项检查都需要先成功还原。如果还原失败,请先修复再进行审计——损坏的锁定状态会导致版本输出不可靠。
步骤 3:许可证筛查
对照已知的商业化变更检查清单(完整说明见
knowledge/package-recommendations.md):
| 包 | 商业许可证起始版本 | 免费替代方案 |
|---|---|---|
| MediatR | 13+(Lucky Penny,RPL) | Mediator(martinothamar)——源生成,MIT |
| MassTransit | 9+(v8 为 Apache,补丁支持于 2026 年结束,随后 EOL) | Wolverine 6.x,或短期继续使用 v8 |
| FluentAssertions | 8+(v7 保持 Apache,已冻结) | xUnit 内置 Assert(kit 默认)、Shouldly、AwesomeAssertions |
| AutoMapper | 15+(Lucky Penny) | 手动映射(kit 默认)或 Mapperly(MIT) |
当项目使用免费主版本,而简单地“全部更新”会越过许可边界时,就会触发许可证标记——这正是此步骤要避免的陷阱。
步骤 4:报告
生成一张按优先级排列的表格:
| 优先级 | 含义 | 操作 |
|---|---|---|
| VULNERABLE | 当前版本存在已知 CVE | 立即更新、测试并部署 |
| LICENSE | 下一个主版本会越过商业许可边界 | 锁定在边界版本以下,或规划迁移 |
| MAJOR | 落后一个主版本(可能存在破坏性变更) | 一次更新一个,先阅读发行说明 |
| MINOR/PATCH | 常规版本差异 | 批量更新补丁版本;小版本一次更新一个 |
步骤 5:执行(可选)
可通过 /migrate 流程 C 执行更新——一次更新一个包,每次之间运行
dotnet build && dotnet test。切勿批量更新主版本:
批量失败时无法确定问题归属。
使用的 MCP 工具
get_nuget_packages— 清点、检测 CPM、审计 TFMget_diagnostics— 验证更新后解决方案仍能干净地编译
示例
User: /outdated
Claude: Inventorying packages (get_nuget_packages)...
3 projects, CPM enabled (Directory.Packages.props), all net10.0.
Checking versions and CVEs...
| Package | Current | Latest | Priority | Action |
|--------------------------|---------|---------|------------|---------------------------------|
| System.Text.Json (trans.)| 10.0.2 | 10.0.10 | VULNERABLE | Update now (CVE-2026-XXXX) |
| MassTransit | 8.3.0 | 9.1.2 | LICENSE | v9 is commercial. Stay on v8 |
| | | | | (EOL end 2026) or plan Wolverine|
| Serilog.AspNetCore | 9.0.0 | 10.0.0 | MAJOR | Update alone, check sink compat |
| FluentValidation | 12.0.1 | 12.1.1 | PATCH | Batch with other patches |
1 vulnerability, 1 license trap, 1 major, 1 patch.
Want me to apply these via /migrate Flow C?
相关内容
/migrate— 流程 C 会执行本报告建议的更新knowledge/package-recommendations.md— 经过审核的包及许可详情knowledge/mediatr-to-mediator-migration.md— 逐步退出 MediatR 的指南/verify— 应用更新后的完整流水线
评论
支持 Markdown