Files
nuget-downloader/README.md
2025-07-29 11:09:34 +05:00

7.7 KiB
Raw Blame History

NuGet Downloader

Утилита для скачивания NuGet пакетов вместе с их зависимостями в одну папку.

🎯 Цель

Заменить сложную цепочку команд:

alias wnuget="mono /home/tactile/dev/dotnet/test-nuget-download/bin/nuget.exe"
wnuget install Npgsql -OutputDirectory "./pg-cache" -Framework netstandard2.0
find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \;

На простую команду:

./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages

Возможности

  • Скачивание пакета с указанием версии или последней стабильной
  • Выбор целевого framework (netstandard2.0, net6.0, net8.0 и др.)
  • Автоматическое скачивание всех зависимостей
  • Сохранение всех пакетов в одну папку
  • Поддержка различных источников NuGet
  • Интерактивный режим (запрос параметров)
  • Удобный bash скрипт с поддержкой версий

Сборка

dotnet build

Использование

Через скрипт (рекомендуется)

# Базовое использование
./nuget-download.sh Npgsql

# С указанием framework
./nuget-download.sh Npgsql netstandard2.0

# С указанием папки назначения
./nuget-download.sh Npgsql netstandard2.0 ./my-packages

# С указанием версии
./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6

# Интерактивный режим (запуск без параметров)
./nuget-download.sh

# Справка
./nuget-download.sh --help

Через dotnet run

# Базовое использование
dotnet run -- --package-id Npgsql --framework netstandard2.0

# С указанием версии
dotnet run -- --package-id Npgsql --version 7.0.6 --framework netstandard2.0

# С указанием папки назначения
dotnet run -- --package-id Npgsql --framework netstandard2.0 --output-dir ./my-packages

# Полный пример
dotnet run -- \
  --package-id Npgsql \
  --version 7.0.6 \
  --framework netstandard2.0 \
  --output-dir ./pg-nuget-packages \
  --source https://api.nuget.org/v3/index.json

Параметры

Для скрипта nuget-download.sh:

  • package-id - ID пакета для скачивания (обязательный)
  • framework - Целевой framework (по умолчанию netstandard2.0)
  • output-dir - Папка для сохранения пакетов (по умолчанию ./nuget-packages)
  • version - Версия пакета (по умолчанию последняя стабильная)

Для dotnet run:

  • --package-id - ID пакета для скачивания (обязательный)
  • --version - Версия пакета (по умолчанию последняя стабильная)
  • --framework - Целевой framework (по умолчанию netstandard2.0)
  • --output-dir - Папка для сохранения пакетов (по умолчанию ./nuget-packages)
  • --source - Источник NuGet (по умолчанию https://api.nuget.org/v3/index.json)

Примеры frameworks

  • netstandard2.0 - .NET Standard 2.0
  • net6.0 - .NET 6
  • net8.0 - .NET 8
  • net472 - .NET Framework 4.7.2

Сравнение с вашим предыдущим подходом

Старый подход:

alias wnuget="mono /home/tactile/dev/dotnet/test-nuget-download/bin/nuget.exe"
wnuget install Npgsql -OutputDirectory "./pg-cache" -Framework netstandard2.0
find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \;

Новый подход:

# Через скрипт (проще)
./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages

# Или через dotnet run
dotnet run -- --package-id Npgsql --framework netstandard2.0 --output-dir ./pg-nuget-packages

Преимущества новой утилиты

  1. Одна команда - вместо цепочки команд
  2. Автоматическое разрешение зависимостей - не нужно вручную копировать файлы
  3. Выбор framework - встроенная поддержка
  4. Гибкость - легко добавить новые возможности
  5. Кроссплатформенность - работает на Windows, Linux, macOS
  6. Современный .NET - использует последние версии библиотек NuGet
  7. Простота использования - удобный bash скрипт
  8. Подробный вывод - показывает процесс скачивания и зависимости

Примеры работы

Скачивание пакета без зависимостей

./nuget-download.sh Npgsql netstandard2.0
# Результат: 1 файл Npgsql.9.0.3.nupkg

Скачивание пакета с зависимостями

./nuget-download.sh System.Text.Json netstandard2.0
# Результат: 10 файлов включая все зависимости

Структура проекта

├── Program.cs              # Основной код утилиты
├── NuGetDownloader.csproj  # Файл проекта .NET
├── nuget-download.sh       # Bash скрипт с интерактивным режимом
├── README.md               # Документация
└── [папки с результатами]  # Скачанные пакеты

🆕 Последние улучшения

Добавлена поддержка версий

Теперь можно указать конкретную версию пакета:

./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6

Добавлен интерактивный режим

При запуске без параметров скрипт запрашивает все необходимые данные:

./nuget-download.sh
# Введите ID пакета: Npgsql
# Введите framework [netstandard2.0]: 
# Введите папку назначения [./nuget-packages]: 
# Введите версию (пусто для последней стабильной): 7.0.6

Готово!

Утилита полностью готова к использованию. Она успешно заменяет вашу предыдущую цепочку команд и предоставляет дополнительные возможности:

  • Автоматическое скачивание зависимостей
  • Выбор framework
  • Удобный bash скрипт с поддержкой версий
  • Интерактивный режим (запрос параметров)
  • Подробный вывод процесса
  • Кроссплатформенность
  • Современный .NET 8
  • Указание конкретной версии пакета

Быстрый старт

# Скачать Npgsql с зависимостями
./nuget-download.sh Npgsql netstandard2.0 ./my-packages

# Скачать System.Text.Json (много зависимостей)
./nuget-download.sh System.Text.Json netstandard2.0 ./json-packages

# Скачать конкретную версию Npgsql
./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6

# Интерактивный режим
./nuget-download.sh