| name | nuget-manager |
| description | Manages NuGet packages in .NET projects and solutions. Use when adding, removing, or updating NuGet package references or versions. Enforces dotnet CLI for package operations, supports Directory.Packages.props central version management, and provides version verification workflows. Handles dotnet add/remove package, dotnet list package --outdated, and dotnet restore. |
NuGet Manager
Prerequisites
- .NET SDK installed (typically .NET 8.0 SDK or later, or a version compatible with the target solution).
dotnet CLI available on your PATH.
jq (JSON processor) — Linux/macOS; OR
- PowerShell (
pwsh) — Windows/cross-platform; required for version verification using dotnet package search.
Core Rules
- NEVER directly edit
.csproj, .props, or Directory.Packages.props files to add or remove packages. Always use dotnet add package and dotnet remove package commands.
- DIRECT EDITING is ONLY permitted for changing versions of existing packages.
- VERSION UPDATES must follow the mandatory workflow:
- Verify the target version exists on NuGet.
- Determine if versions are managed per-project (
.csproj) or centrally (Directory.Packages.props).
- Update the version string in the appropriate file.
- Immediately run
dotnet restore to verify compatibility.
Workflows
Adding a Package
Use dotnet add [<PROJECT>] package <PACKAGE_NAME> [--version <VERSION>].
Example: dotnet add src/MyProject/MyProject.csproj package Newtonsoft.Json
Removing a Package
Use dotnet remove [<PROJECT>] package <PACKAGE_NAME>.
Example: dotnet remove src/MyProject/MyProject.csproj package Newtonsoft.Json
Updating Package Versions
When updating a version, follow these steps:
-
Verify Version Existence:
Check if the version exists using the dotnet package search command with exact match and JSON formatting.
Using jq:
dotnet package search <PACKAGE_NAME> --exact-match --format json | jq -e '.searchResult[].packages[] | select(.version == "<VERSION>")'
Using PowerShell:
(dotnet package search <PACKAGE_NAME> --exact-match --format json | ConvertFrom-Json).searchResult.packages | Where-Object { $_.version -eq "<VERSION>" }
-
Determine Version Management:
- Search for
Directory.Packages.props in the solution root. If present, versions should be managed there via <PackageVersion Include="Package.Name" Version="1.2.3" />.
- If absent, check individual
.csproj files for <PackageReference Include="Package.Name" Version="1.2.3" />.
-
Apply Changes:
Modify the identified file with the new version string.
-
Verify Stability:
Run dotnet restore on the project or solution. If errors occur, revert the change and investigate.
Listing Outdated Packages
Use dotnet list package --outdated to find packages with newer versions available.
Per project:
dotnet list src/MyProject/MyProject.csproj package --outdated
Entire solution:
dotnet list package --outdated
The output shows the current version, the latest resolved version, and the latest available version for each package. Use this as the basis for deciding which packages to update, then follow the Updating Package Versions workflow for each.