NetConfigus 0.8.6
dotnet add package NetConfigus --version 0.8.6
NuGet\Install-Package NetConfigus -Version 0.8.6
<PackageReference Include="NetConfigus" Version="0.8.6" />
<PackageVersion Include="NetConfigus" Version="0.8.6" />
<PackageReference Include="NetConfigus" />
paket add NetConfigus --version 0.8.6
#r "nuget: NetConfigus, 0.8.6"
#:package NetConfigus@0.8.6
#addin nuget:?package=NetConfigus&version=0.8.6
#tool nuget:?package=NetConfigus&version=0.8.6
NetConfigus: Универсальный конфигурационный менеджер для .NET
NetConfigus — продвинутая библиотека для управления конфигурацией приложений .NET, объединяющая параметры командной строки, переменные среды и JSON-файлы в единую систему с четкой приоритезацией источников.
🌟 Ключевые особенности
- Мультиисточниковость: Объединение конфигурации из трех источников:
- Аргументы командной строки (наивысший приоритет)
- Переменные среды
- 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" />
🚀 Быстрый старт
- Определите класс конфигурации:
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; }
}
- Загрузите конфигурацию:
var config = CommandLineParser.Load<AppConfig>(
"config.json", // Путь к JSON-файлу
Environment.GetCommandLineArgs()[1..], // Аргументы
isConfigFileRequired: false
);
- Используйте:
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 | 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.