nuget-manager

nuget-manager

热门

管理 .NET 项目/解决方案中的 NuGet 包。在添加、删除或更新 NuGet 包版本时使用此技能。它强制使用 `dotnet` CLI 进行包管理,并仅在更新版本时提供直接编辑文件的严格流程。

3.6万Star
4464Fork
更新于 2026/7/2
SKILL.md
readonly只读
name
nuget-manager
description

管理 .NET 项目/解决方案中的 NuGet 包。在添加、删除或更新 NuGet 包版本时使用此技能。它强制使用 `dotnet` CLI 进行包管理,并仅在更新版本时提供直接编辑文件的严格流程。

NuGet 管理器

概述

此技能确保跨 .NET 项目的 NuGet 包管理的一致性和安全性。它优先使用 dotnet CLI 来维护项目完整性,并强制实施严格的验证和恢复工作流以进行版本更新。

先决条件

  • 已安装 .NET SDK(通常为 .NET 8.0 SDK 或更高版本,或与目标解决方案兼容的版本)。
  • dotnet CLI 可在 PATH 中使用。
  • jq(JSON 处理器)或 PowerShell(用于使用 dotnet package search 进行版本验证)。

核心规则

  1. 绝不直接编辑 .csproj.propsDirectory.Packages.props 文件来添加删除包。始终使用 dotnet add packagedotnet remove package 命令。
  2. 直接编辑仅允许用于更改现有包的版本。
  3. 版本更新必须遵循强制工作流:
    • 验证目标版本在 NuGet 上存在。
    • 确定版本是按项目(.csproj)管理还是集中管理(Directory.Packages.props)。
    • 在相应文件中更新版本字符串。
    • 立即运行 dotnet restore 以验证兼容性。

工作流

添加包

使用 dotnet add [<PROJECT>] package <PACKAGE_NAME> [--version <VERSION>]
示例:dotnet add src/MyProject/MyProject.csproj package Newtonsoft.Json

删除包

使用 dotnet remove [<PROJECT>] package <PACKAGE_NAME>
示例:dotnet remove src/MyProject/MyProject.csproj package Newtonsoft.Json

更新包版本

更新版本时,请遵循以下步骤:

  1. 验证版本存在
    使用 dotnet package search 命令进行精确匹配并以 JSON 格式输出,检查版本是否存在。
    使用 jq
    dotnet package search <PACKAGE_NAME> --exact-match --format json | jq -e '.searchResult[].packages[] | select(.version == "<VERSION>")'
    使用 PowerShell:
    (dotnet package search <PACKAGE_NAME> --exact-match --format json | ConvertFrom-Json).searchResult.packages | Where-Object { $_.version -eq "<VERSION>" }

  2. 确定版本管理方式

    • 在解决方案根目录中搜索 Directory.Packages.props。如果存在,版本应通过 <PackageVersion Include="Package.Name" Version="1.2.3" /> 在此处管理。
    • 如果不存在,检查各个 .csproj 文件中的 <PackageReference Include="Package.Name" Version="1.2.3" />
  3. 应用更改
    使用新版本字符串修改已识别的文件。

  4. 验证稳定性
    对项目或解决方案运行 dotnet restore。如果出现错误,则还原更改并进行调查。

示例

用户:“将 Serilog 添加到 WebApi 项目”

操作:执行 dotnet add src/WebApi/WebApi.csproj package Serilog

用户:“将整个解决方案中的 Newtonsoft.Json 更新到 13.0.3”

操作

  1. 验证 13.0.3 存在:dotnet package search Newtonsoft.Json --exact-match --format json(并解析输出以确认存在 "13.0.3")。
  2. 找到定义位置(例如 Directory.Packages.props)。
  3. 编辑文件以更新版本。
  4. 运行 dotnet restore