7.7 KiB
7.7 KiB
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.0net6.0- .NET 6net8.0- .NET 8net472- .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
Преимущества новой утилиты
- Одна команда - вместо цепочки команд
- Автоматическое разрешение зависимостей - не нужно вручную копировать файлы
- Выбор framework - встроенная поддержка
- Гибкость - легко добавить новые возможности
- Кроссплатформенность - работает на Windows, Linux, macOS
- Современный .NET - использует последние версии библиотек NuGet
- Простота использования - удобный bash скрипт
- Подробный вывод - показывает процесс скачивания и зависимости
Примеры работы
Скачивание пакета без зависимостей
./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