NetConfigus 0.8.3
See the version list below for details.
dotnet add package NetConfigus --version 0.8.3
NuGet\Install-Package NetConfigus -Version 0.8.3
<PackageReference Include="NetConfigus" Version="0.8.3" />
<PackageVersion Include="NetConfigus" Version="0.8.3" />
<PackageReference Include="NetConfigus" />
paket add NetConfigus --version 0.8.3
#r "nuget: NetConfigus, 0.8.3"
#:package NetConfigus@0.8.3
#addin nuget:?package=NetConfigus&version=0.8.3
#tool nuget:?package=NetConfigus&version=0.8.3
NetConfigus
Универсальный парсер конфигурации для .NET
NetConfigus — это библиотека для удобного парсинга аргументов командной строки, переменных среды и файлов конфигурации в объекты C#. Она позволяет легко комбинировать настройки из разных источников с приоритетом: CLI > Environment > JSON.
Особенности
✅ Гибкая конфигурация
- Поддержка позиционных и именованных аргументов (
-f,--file,value1 value2) - Автоматическая загрузка из переменных среды (
EnvironmentVariableName) - Чтение JSON-конфигурации с возможностью переопределения через CLI
✅ Простота использования
- Декларативный стиль через атрибуты
[CommandLine] - Автоматическая конвертация типов (
int,bool,double, массивы) - Валидация обязательных параметров (
Required = true)
✅ Безопасность и надежность
- Проверка конфликтов (дублирование параметров, несовместимые типы)
- Поддержка массивов (накопление значений)
- Четкие сообщения об ошибках
Установка
Добавьте пакет через NuGet (или вручную подключите исходники):
dotnet add package NetConfigus
Использование
1. Определение конфигурации
Создайте класс и пометьте свойства атрибутом [CommandLine]:
using NetConfigus;
public class AppConfig
{
// Позиционный аргумент (обязательный)
[CommandLine(Position = 0, Required = true, Description = "Input file path")]
public string InputFile { get; set; }
// Именованный аргумент (--output или -o)
[CommandLine(ShortName = 'o', LongName = "output", Description = "Output file path")]
public string OutputFile { get; set; }
// Флаг (--verbose или -v)
[CommandLine(ShortName = 'v', LongName = "verbose")]
public bool Verbose { get; set; }
// Переменная среды + CLI (--port или ENV=APP_PORT)
[CommandLine(LongName = "port", EnvironmentVariableName = "APP_PORT")]
public int Port { get; set; } = 8080;
// Массив значений (--item=value1 --item=value2)
[CommandLine(LongName = "item")]
public string[] Items { get; set; }
}
2. Загрузка конфигурации
Используйте CommandLineParser.Load для загрузки из разных источников:
var config = new AppConfig();
// Загрузка из JSON + CLI (если файл есть)
CommandLineParser.Load(config, "config.json", args);
// Или только из аргументов командной строки
CommandLineParser.Parse(config, args);
3. Запуск приложения
# Примеры вызова:
./app.exe input.txt --output=result.txt -v
./app.exe data.json --port 9000 --item=apple --item=orange
Примеры
1. Позиционные + именованные аргументы
./app.exe input.txt -o output.txt --verbose
→ InputFile = "input.txt", OutputFile = "output.txt", Verbose = true
2. Переменные среды
export APP_PORT=3000
./app.exe --items=one --items=two
→ Port = 3000, Items = ["one", "two"]
3. JSON-конфигурация
config.json:
{ "Port": 5000, "Verbose": true }
→ Значения будут переопределяться аргументами CLI.
Обработка ошибок
Библиотека выбрасывает исключения в случаях:
ArgumentException– отсутствует обязательный параметр.FormatException– неверный формат значения (например, строка вместо числа).InvalidOperationException– конфликт параметров (дублирование, несовместимые типы).
Лицензия
MIT License © 2024 virst
Разрешено свободное использование, модификация и распространение.
Вклад в проект
Приветствуются пул-реквесты и issue!
🚀 Ссылки:
NetConfigus — удобный инструмент для работы с конфигурацией в .NET-приложениях.
Попробуйте и упростите обработку параметров! 🎉
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net8.0 is compatible. net8.0-android was computed. net8.0-browser was computed. net8.0-ios was computed. net8.0-maccatalyst was computed. net8.0-macos was computed. net8.0-tvos was computed. net8.0-windows was computed. net9.0 was computed. net9.0-android was computed. net9.0-browser was computed. net9.0-ios was computed. net9.0-maccatalyst was computed. net9.0-macos was computed. net9.0-tvos was computed. net9.0-windows was computed. net10.0 was computed. net10.0-android was computed. net10.0-browser was computed. net10.0-ios was computed. net10.0-maccatalyst was computed. net10.0-macos was computed. net10.0-tvos was computed. net10.0-windows was computed. |
-
net8.0
- No dependencies.
NuGet packages
This package is not used by any NuGet packages.
GitHub repositories
This package is not used by any popular GitHub repositories.