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 пакетов вместе с их зависимостями в одну папку.
Утилита для скачивания 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/ \;
```
# Скачать пакет с зависимостями
./nuget-download.sh Npgsql
На простую команду:
```bash
./nuget-download.sh Npgsql netstandard2.0 ./pg-nuget-packages
# Указать framework и папку
./nuget-download.sh Npgsql netstandard2.0 ./my-packages
# Указать версию
./nuget-download.sh Npgsql netstandard2.0 ./my-packages 7.0.6
# Интерактивный режим
./nuget-download.sh
```
## Возможности
-Скачивание пакета с указанием версии или последней стабильной
- ✅ Выбор целевого framework (netstandard2.0, net6.0, net8.0 и др.)
-Автоматическое скачивание всех зависимостей
-Сохранение всех пакетов в одну папку
-Поддержка различных источников NuGet
- ✅ Интерактивный режим (запрос параметров)
- ✅ Удобный bash скрипт с поддержкой версий
-Автоматическое скачивание зависимостей
- ✅ Выбор framework (netstandard2.0, net6.0, net8.0)
-Указание версии пакета
-Интерактивный режим
-Кроссплатформенность
## Использование
### 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
```
## Использование
## Безопасность
### Через скрипт (рекомендуется)
Все NuGet пакеты обновлены до безопасных версий (6.14.0)
## Замена старого подхода
**Было:**
```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
alias wnuget="mono /path/to/nuget.exe"
wnuget install Npgsql -OutputDirectory "./cache" -Framework netstandard2.0
find ./cache -name "*.nupkg" -exec cp {} ./packages/ \;
```
### Через 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
./nuget-download.sh Npgsql netstandard2.0 ./packages
```