200 lines
7.7 KiB
Markdown
200 lines
7.7 KiB
Markdown
# 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
|
||
``` |