NetConfigus 0.8.3

There is a newer version of this package available.
See the version list below for details.
dotnet add package NetConfigus --version 0.8.3
                    
NuGet\Install-Package NetConfigus -Version 0.8.3
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="NetConfigus" Version="0.8.3" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NetConfigus" Version="0.8.3" />
                    
Directory.Packages.props
<PackageReference Include="NetConfigus" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add NetConfigus --version 0.8.3
                    
#r "nuget: NetConfigus, 0.8.3"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package NetConfigus@0.8.3
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=NetConfigus&version=0.8.3
                    
Install as a Cake Addin
#tool nuget:?package=NetConfigus&version=0.8.3
                    
Install as a Cake Tool

NetConfigus

Универсальный парсер конфигурации для .NET
License: MIT

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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.

Version Downloads Last Updated
0.8.6 561 7/22/2025
0.8.3 444 7/21/2025