ConfigManagerPlus 1.0.0

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

ConfigManagerPlus

A flexible and lightweight configuration manager for .NET with support for JSON, YAML, INI, .env, plus hot reload, environment variables, command-line overrides, typed getters, section access, validation, and secret masking.


✨ Features

  • 📂 Multiple file formats: JSON, YAML, INI, .env
  • 🔄 Hot reload: Auto-reload config on file changes
  • 🌐 Overrides: Environment variables & command-line arguments
  • 🧩 Merging: Combine multiple sources (last wins)
  • 🎯 Typed getters: GetInt, GetBool, GetDouble, GetGuid, GetTimeSpan
  • 📦 Section API: Access nested configs via cfg.Section("Database")
  • Validation: Require specific keys
  • 🛡️ Secret masking: Hide sensitive values when dumping
  • 🪞 Snapshot: Immutable copy of current config
  • 🔗 Bind<T>: Map config into POCOs

📦 Installation

dotnet add package ConfigManagerPlus

🚀 Quick Start

using ConfigManagerPlus;

// Build config with multiple sources
var cfg = new ConfigManager()
    .AddJson("appsettings.json")
    .AddYaml("config.yaml")
    .AddIni("settings.ini")
    .AddEnvFile(".env")
    .AddEnvironmentVariables("APP__") // Prefix filter
    .AddCommandLine(args);

// Typed access with defaults
int port = cfg.GetInt("Server:Port", 8080);
bool debug = cfg.GetBool("Server:Debug", false);

// Section view
var dbSection = cfg.Section("Database");
string conn = dbSection.Get("ConnectionString", "localhost");

// Validation
cfg.Require("Database:ConnectionString", "Server:Port");

// Bind to POCO
var dbSettings = cfg.Section("Database").Bind<DbSettings>();

// Pretty dump with secret masking
Console.WriteLine(cfg.Dump());

📂 Example Configs

appsettings.json

{
  "Server": {
    "Port": 5000,
    "Debug": true
  },
  "Database": {
    "ConnectionString": "Server=.;Database=App;Trusted_Connection=True;"
  }
}

.env

APP__Server__Port=6000
APP__Server__Debug=false
APP__Database__ConnectionString=Server=db;User=app;Password=SuperSecret

🔥 Hot Reload

ConfigManager+ watches JSON, YAML, INI, and .env files for changes. You can subscribe to changes:

cfg.Changed += (s, e) =>
{
    Console.WriteLine($"Config changed from {e.SourceName}::{e.SourcePath}");
};

🛡️ Secret Masking

Keys containing password, secret, token, key, connectionstring are automatically masked in Dump():

Database:ConnectionString = ************True;
ApiToken = ********abcd
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
1.0.0 73 9/12/2025