NetConfigus 0.8.6

dotnet add package NetConfigus --version 0.8.6
                    
NuGet\Install-Package NetConfigus -Version 0.8.6
                    
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.6" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="NetConfigus" Version="0.8.6" />
                    
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.6
                    
#r "nuget: NetConfigus, 0.8.6"
                    
#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.6
                    
#: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.6
                    
Install as a Cake Addin
#tool nuget:?package=NetConfigus&version=0.8.6
                    
Install as a Cake Tool

NetConfigus: Универсальный конфигурационный менеджер для .NET

License Version

NetConfigus — продвинутая библиотека для управления конфигурацией приложений .NET, объединяющая параметры командной строки, переменные среды и JSON-файлы в единую систему с четкой приоритезацией источников.

🌟 Ключевые особенности

  • Мультиисточниковость: Объединение конфигурации из трех источников:
    1. Аргументы командной строки (наивысший приоритет)
    2. Переменные среды
    3. JSON-файлы конфигурации
  • Гибкий парсинг:
    • Позиционные (app.exe file.txt)
    • Именованные (--output=result.json)
    • Комбинированные флаги (-ab)
    • Пустые значения (-c=)
  • Автоматическая конвертация типов: int, bool, double, string, массивы
  • Валидация конфигурации: Обязательные параметры, проверка конфликтов
  • Поддержка массивов: Множественные объявления параметров
  • Кросс-платформенность: Работает на любой ОС с .NET 5+

⚙️ Установка

Добавьте пакет через NuGet:

dotnet add package NetConfigus

Или укажите в .csproj:

<PackageReference Include="NetConfigus" Version="1.0.0" />

🚀 Быстрый старт

  1. Определите класс конфигурации:
public class AppConfig
{
    [CommandLine(Position = 0, Required = true)]
    public string Source { get; set; } = default!;

    [CommandLine(ShortName = 't', EnvironmentVariableName = "APP_THREADS")]
    public int Threads { get; set; } = 1;

    [CommandLine(LongName = "verbose")]
    public bool Verbose { get; set; }
}
  1. Загрузите конфигурацию:
var config = CommandLineParser.Load<AppConfig>(
    "config.json",          // Путь к JSON-файлу
    Environment.GetCommandLineArgs()[1..], // Аргументы
    isConfigFileRequired: false
);
  1. Используйте:
Console.WriteLine($"Processing {config.Source} with {config.Threads} threads");
if (config.Verbose) Console.WriteLine("Verbose mode enabled");

📚 Документация

Атрибут CommandLineAttribute

Свойство Описание По умолчанию
ShortName (char) Краткое имя параметра (-v) '\0'
LongName (string) Полное имя параметра (--verbose) null
Description (string) Описание для справки null
EnvironmentVariableName Имя переменной среды null
Required (bool) Обязательность параметра false
Position (int) Позиция аргумента (0-based) -1 (не задан)

Методы CommandLineParser

Load<T>(string? fn, string[]? args, bool isConfigFileRequired = false)

Загружает конфигурацию из нескольких источников.

Параметры:

  • fn: Путь к JSON-файлу конфигурации
  • args: Аргументы командной строки
  • isConfigFileRequired: Выбрасывать исключение если файл не найден
Parse<T>(T options, string[] args)

Парсит только аргументы командной строки.

🧪 Примеры использования

Комбинированные флаги

public class Flags {
    [CommandLine(ShortName = 'a')] public bool A { get; set; }
    [CommandLine(ShortName = 'b')] public bool B { get; set; }
}

// Использование: app -ab
// Результат: A=true, B=true

Работа с массивами

public class LogConfig {
    [CommandLine(ShortName = 'l')]
    public string[] Logs { get; set; } = [];
}

// Использование: app -l=error -l=debug
// Результат: Logs = ["error", "debug"]

Переопределение через окружение

// config.json
{ "ApiKey": "default-key" }
public class ServiceConfig {
    [CommandLine(EnvironmentVariableName = "API_KEY")]
    public string ApiKey { get; set; } = default!;
}

// При наличии переменной среды API_KEY=prod-key
// Результат: ApiKey = "prod-key"

⚠️ Ограничения

  • Поддерживаемые типы: string, int, bool, double, массивы
  • Булевы параметры не могут быть позиционными
  • Не поддерживаются вложенные объекты конфигурации

📜 Лицензия

Проект распространяется под лицензией MIT. Полный текст лицензии доступен в файле LICENSE.

👤 Автор

virst
GitHub профиль


graph LR
    A[Загрузка из JSON] --> B[Переменные среды]
    B --> C[Аргументы CLI]
    C --> D[Валидация]
    D --> E[Готовый конфиг]

NetConfigus упрощает жизнь разработчика, предоставляя единый интерфейс для работы с разными источниками конфигурации с минимальным количеством кода.

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