update README

This commit is contained in:
2025-07-29 11:11:42 +05:00
parent e91bd99572
commit 3fe043f38b

244
README.md
View File

@ -1,30 +1,71 @@
# NuGet Downloader # NuGet Downloader
Утилита для скачивания NuGet пакетов вместе с их зависимостями в одну папку. Утилита для скачивания NuGet пакетов с зависимостями в одну папку.
## 🎯 Цель ## Быстрый старт
Заменить сложную цепочку команд:
```bash ```bash
alias wnuget="mono /home/tactile/dev/dotnet/test-nuget-download/bin/nuget.exe" # Скачать пакет с зависимостями
wnuget install Npgsql -OutputDirectory "./pg-cache" -Framework netstandard2.0 ./nuget-download.sh Npgsql
find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \;
```
На простую команду: # Указать framework и папку
```bash ./nuget-download.sh Npgsql netstandard2.0 ./my-packages
./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages
# Указать версию
./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6
# Интерактивный режим
./nuget-download.sh
``` ```
## Возможности ## Возможности
-Скачивание пакета с указанием версии или последней стабильной -Автоматическое скачивание зависимостей
- ✅ Выбор целевого framework (netstandard2.0, net6.0, net8.0 и др.) - ✅ Выбор framework (netstandard2.0, net6.0, net8.0)
-Автоматическое скачивание всех зависимостей -Указание версии пакета
-Сохранение всех пакетов в одну папку -Интерактивный режим
-Поддержка различных источников NuGet -Кроссплатформенность
- ✅ Интерактивный режим (запрос параметров)
- ✅ Удобный bash скрипт с поддержкой версий ## Использование
### Bash скрипт (рекомендуется)
```bash
./nuget-download.sh <package-id> [framework] [output-dir] [version]
```
### Прямой запуск
```bash
dotnet run --package-id Npgsql --framework netstandard2.0 --output-dir ./packages --version 7.0.6
```
## Параметры
- `package-id` - ID пакета (обязательный)
- `framework` - Framework (по умолчанию netstandard2.0)
- `output-dir` - Папка назначения (по умолчанию ./nuget-packages)
- `version` - Версия пакета (по умолчанию последняя стабильная)
## Примеры
```bash
# Базовое использование
./nuget-download.sh Npgsql
# С framework
./nuget-download.sh Npgsql net6.0
# С папкой назначения
./nuget-download.sh Npgsql netstandard2.0 ./my-packages
# С версией
./nuget-download.sh Npgsql netstandard2.0 ./packages 7.0.6
# Интерактивный режим
./nuget-download.sh
# Справка
./nuget-download.sh --help
```
## Сборка ## Сборка
@ -32,169 +73,20 @@ find ./pg-cache -name "*.nupkg" -exec cp --parents -v {} ./pg-nuget-packages/ \;
dotnet build dotnet build
``` ```
## Использование ## Безопасность
### Через скрипт (рекомендуется) Все NuGet пакеты обновлены до безопасных версий (6.14.0)
## Замена старого подхода
**Было:**
```bash ```bash
# Базовое использование alias wnuget="mono /path/to/nuget.exe"
./nuget-download.sh Npgsql wnuget install Npgsql -OutputDirectory "./cache" -Framework netstandard2.0
find ./cache -name "*.nupkg" -exec cp {} ./packages/ \;
# С указанием 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 ```bash
# Базовое использование ./nuget-download.sh Npgsql netstandard2.0 ./packages
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
``` ```