TinyConfig 1.0.0
dotnet add package TinyConfig --version 1.0.0
NuGet\Install-Package TinyConfig -Version 1.0.0
<PackageReference Include="TinyConfig" Version="1.0.0" />
<PackageVersion Include="TinyConfig" Version="1.0.0" />
<PackageReference Include="TinyConfig" />
paket add TinyConfig --version 1.0.0
#r "nuget: TinyConfig, 1.0.0"
#:package TinyConfig@1.0.0
#addin nuget:?package=TinyConfig&version=1.0.0
#tool nuget:?package=TinyConfig&version=1.0.0
TinyConfig
The simplest way to manage configuration in .NET. One unified interface for INI, JSON, XML, and Windows Registry.
Install
PM> Install-Package TinyConfig
Or via .NET CLI:
dotnet add package TinyConfig
Quick Start
// Pick any backend — the API is the same
var config = TinyConfig.FromFile("settings.ini"); // INI
var config = TinyConfig.FromJson("settings.json"); // JSON
var config = TinyConfig.FromXml("settings.xml"); // XML
var config = TinyConfig.FromRegistry(@"SOFTWARE\MyApp"); // Registry
API
All providers implement ITinyConfig:
// Read a value (returns default if not found)
string host = config.Get("Server", "Host", "localhost");
// Read with automatic type conversion
int port = config.Get<int>("Server", "Port", 8080);
bool debug = config.Get<bool>("App", "Debug", false);
// Auto-save: writes the default value if the key doesn't exist
string theme = config.Get("UI", "Theme", "dark", autoSave: true);
// Write a value
config.Set("Server", "Host", "192.168.0.1");
// Check if a key exists
bool exists = config.Exists("Server", "Host");
Providers
INI
var config = TinyConfig.FromFile("settings.ini");
config.Set("Server", "Host", "localhost");
[Server]
Host=localhost
JSON
var config = TinyConfig.FromJson("settings.json");
config.Set("Database", "Port", 5432);
{
"Database": {
"Port": "5432"
}
}
XML
var config = TinyConfig.FromXml("settings.xml");
config.Set("Logging", "Level", "Info");
<?xml version="1.0"?>
<Config>
<Logging>
<Level>Info</Level>
</Logging>
</Config>
Windows Registry
// Default: HKEY_CURRENT_USER
var config = TinyConfig.FromRegistry(@"SOFTWARE\MyApp");
// Use a different root hive
var config = TinyConfig.FromRegistry(@"SOFTWARE\MyApp", RegistryRoot.LocalMachine);
Available RegistryRoot values: CurrentUser (default), LocalMachine, ClassesRoot, Users, CurrentConfig
Type Conversion
Get<T> converts string values using TypeDescriptor. Supports int, bool, double, float, DateTime, enum, TimeSpan, and any type with a registered TypeConverter.
var timeout = config.Get<TimeSpan>("App", "Timeout", TimeSpan.FromSeconds(30));
var mode = config.Get<MyEnum>("App", "Mode", MyEnum.Default);
If conversion fails, the default value is returned safely.
Section Mapping
The first parameter (section) maps to different concepts depending on the provider:
| Provider | Section maps to |
|---|---|
| INI | [Section] header |
| JSON | Top-level object |
| XML | Child element of <Config> |
| Registry | Sub-key under root path |
Target Framework
.NET Standard 2.0 — compatible with .NET Framework 4.6.1+, .NET Core 2.0+, and .NET 5 through 10+.
License
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. net6.0-android was computed. net6.0-ios was computed. net6.0-maccatalyst was computed. net6.0-macos was computed. net6.0-tvos was computed. net6.0-windows was computed. net7.0 was computed. net7.0-android was computed. net7.0-ios was computed. net7.0-maccatalyst was computed. net7.0-macos was computed. net7.0-tvos was computed. net7.0-windows was computed. net8.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
| .NET Standard | netstandard2.0 is compatible. netstandard2.1 was computed. |
| .NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
| MonoAndroid | monoandroid was computed. |
| MonoMac | monomac was computed. |
| MonoTouch | monotouch was computed. |
| Tizen | tizen40 was computed. tizen60 was computed. |
| Xamarin.iOS | xamarinios was computed. |
| Xamarin.Mac | xamarinmac was computed. |
| Xamarin.TVOS | xamarintvos was computed. |
| Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETStandard 2.0
- Microsoft.Win32.Registry (>= 5.0.0)
- System.Text.Json (>= 8.0.5)
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 | 102 | 3/6/2026 |
| 1.0.0-test.2 | 54 | 3/6/2026 |