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

200 lines
7.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# NuGet Downloader
Утилита для скачивания NuGet пакетов вместе с их зависимостями в одну папку.
## 🎯 Цель
Заменить сложную цепочку команд:
```bash
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/ \;
```
На простую команду:
```bash
./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages
```
## Возможности
- ✅ Скачивание пакета с указанием версии или последней стабильной
- ✅ Выбор целевого framework (netstandard2.0, net6.0, net8.0 и др.)
- ✅ Автоматическое скачивание всех зависимостей
- ✅ Сохранение всех пакетов в одну папку
- ✅ Поддержка различных источников NuGet
- ✅ Интерактивный режим (запрос параметров)
- ✅ Удобный bash скрипт с поддержкой версий
## Сборка
```bash
dotnet build
```
## Использование
### Через скрипт (рекомендуется)
```bash
# Базовое использование
./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
```bash
# Базовое использование
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
## Сравнение с вашим предыдущим подходом
**Старый подход:**
```bash
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/ \;
```
**Новый подход:**
```bash
# Через скрипт (проще)
./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. **Подробный вывод** - показывает процесс скачивания и зависимости
## Примеры работы
### Скачивание пакета без зависимостей
```bash
./nuget-download.sh Npgsql netstandard2.0
# Результат: 1 файл Npgsql.9.0.3.nupkg
```
### Скачивание пакета с зависимостями
```bash
./nuget-download.sh System.Text.Json netstandard2.0
# Результат: 10 файлов включая все зависимости
```
## Структура проекта
```
├── Program.cs # Основной код утилиты
├── NuGetDownloader.csproj # Файл проекта .NET
├── nuget-download.sh # Bash скрипт с интерактивным режимом
├── README.md # Документация
└── [папки с результатами] # Скачанные пакеты
```
## 🆕 Последние улучшения
### ✅ Добавлена поддержка версий
Теперь можно указать конкретную версию пакета:
```bash
./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6
```
### ✅ Добавлен интерактивный режим
При запуске без параметров скрипт запрашивает все необходимые данные:
```bash
./nuget-download.sh
# Введите ID пакета: Npgsql
# Введите framework [netstandard2.0]:
# Введите папку назначения [./nuget-packages]:
# Введите версию (пусто для последней стабильной): 7.0.6
```
## ✅ Готово!
Утилита полностью готова к использованию. Она успешно заменяет вашу предыдущую цепочку команд и предоставляет дополнительные возможности:
- ✅ Автоматическое скачивание зависимостей
- ✅ Выбор framework
- ✅ Удобный bash скрипт с поддержкой версий
- ✅ Интерактивный режим (запрос параметров)
- ✅ Подробный вывод процесса
- ✅ Кроссплатформенность
- ✅ Современный .NET 8
- ✅ Указание конкретной версии пакета
### Быстрый старт
```bash
# Скачать 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
```