Главная · Скиллы · nuget-manager

nuget-managerOfficialменеджер NuGet GitHub Copilot

github/awesome-copilot

Менеджер NuGet.

Установка

npx -y skills add github/awesome-copilot --skill nuget-manager --agent claude-code

NuGet Manager

Обзор

Этот скилл обеспечивает согласованное и безопасное управление NuGet-пакетами в .NET-проектах. Он отдаёт приоритет CLI dotnet ради целостности проекта и навязывает строгий процесс проверки и восстановления при обновлении версий.

Предварительные требования

  • Установленный .NET SDK (обычно .NET 8.0 SDK или новее, либо версия, совместимая с целевым решением)
  • dotnet CLI доступен в PATH
  • jq (JSON-процессор) ИЛИ PowerShell (для проверки версий через dotnet package search)

Базовые правила

  1. НИКОГДА не редактируйте напрямую .csproj, .props или Directory.Packages.props для добавления или удаления пакетов. Всегда используйте команды dotnet add package и dotnet 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 существует; 2) найти, где определена (напр. Directory.Packages.props); 3) отредактировать файл; 4) выполнить dotnet restore.

Из того же репозитория