NuGet Package Manager 是 ManagedCode 提供的工具集,用于检查和更新 NuGet 包族。它包含一个公开的 nuget-manager CLI 工具,以及一个 VS Code 扩展,上游仓库同时发布两者。
用途 该工具面向需要跨项目维护 NuGet 包版本的场景,尤其是按包族(例如 Microsoft.Orleans)统一检查过时声明、预览并应用版本更新。它可用于检查过时的 NuGet 声明,审查或应用某个包族在多个项目及中央包管理文件中的版本变更,也可通过 VS Code 扩展在编辑器内完成这些操作。
主要能力
- 按包族检查:使用 --family 指定包族,例如 Microsoft.Orleans 会精确匹配该 ID 及其点边界后代,不会匹配 Microsoft.OrleansExtra。
- 版本策略:--policy latest 接受任何数值上更新的版本;minor 保持在当前主版本内;patch 保持在当前主版本和次版本内。版本号本身不证明 API 兼容性。
- 预发布范围:默认使用稳定版本,需要预览版本时显式添加 --prerelease。
- 源配置:--source https://api.nuget.org/v3/index.json 可添加 NuGet V3 源。配置的源检查失败属于不完整检查,不能视为已是最新。
- 工作区与输出:--path 限定工作区范围,--json 提供机器可读输出。
- 预览与应用:update 支持 --dry-run 预览精确编辑,使用 --yes 应用已授权的选择;不加 --yes 时进入交互式审查。
- VS Code 扩展:可通过侧边栏或编辑器工作台打开 NuGet Package Manager,选择 Groups/List、包族或声明,查看原生差异并在受信任工作区中应用。nugetPackageManager.autoCheck 默认为 true,自动检查可能复用十分钟内成功的版本列表;Check for Updates 会重新查询源。版本更新后,文档中未保存的编辑仍保持未保存状态。
使用方式 安装公开工具并确认当前帮助: dotnet tool install --global nuget-manager nuget-manager --help 已安装时使用 dotnet tool update --global nuget-manager。这是全局工具,不是应用程序的 PackageReference。VS Code 扩展可从 Marketplace 或已发布的 VSIX 安装。
只读检查与预览: nuget-manager check --path . --family Microsoft.Orleans --policy minor --json nuget-manager update --path . --family Microsoft.Orleans --policy minor --dry-run --json
审查预览后应用相同选择: nuget-manager update --path . --family Microsoft.Orleans --policy minor --yes git diff -- '.csproj' '.fsproj' '*.vbproj' 'Directory.Packages.props' dotnet restore dotnet build --no-restore dotnet test --no-build
仅在授权写入该选择时使用 --yes。恢复、构建后运行仓库的聚焦回归测试;保持无关测试并行,并遵守仓库的测试输出预算。该工具不会自动恢复或测试。如果文件在审查快照后发生变化,需刷新并重新审查后再应用。
适用场景
- 检查过时的 NuGet 声明。
- 跨项目及中央包管理文件审查或应用某个包族的版本更新。
- 在 VS Code 中使用 ManagedCode NuGet Package Manager 扩展进行包管理。
限制 支持范围:Directory.Packages.props 中的字面量 PackageVersion 条目、字面量 PackageReference 版本,以及 C#、F#、VB 项目文件中显式的 <Sdk Name="..." Version="..." /> 声明。已有的 Aspire.AppHost.Sdk 声明参与 Aspire 包族;无版本 SDK 保持不变,不会添加 SDK。属性表达式、范围、通配符、无效 XML 和不支持的版本需要手动处理。Project Sdk="Name/version"、Import SDK 以及 global.json 中的 SDK 版本不在该工具范围内。 该管理器不会添加或删除包引用,不解析依赖兼容性,不实现 NuGet.config 源映射,也不对私有源进行身份验证。请勿将凭据放入源设置。条件声明仍可独立选择;更改中央版本会影响所有使用它的项目。
交付与验证 报告所选包族、策略和预发布范围、审查的文件和版本、应用的差异以及恢复/构建/回归结果。区分源检查失败与检查成功但无更新。自动化前确认已安装帮助与命令一致;确认 dry-run 不改变版本文件,应用差异只包含已审查的字面量版本;确认过期审查已刷新,不支持的声明保持显式;确认恢复更改版本后聚焦的消费者回归测试通过。