ConfKit 1.0.0
dotnet add package ConfKit --version 1.0.0
NuGet\Install-Package ConfKit -Version 1.0.0
<PackageReference Include="ConfKit" Version="1.0.0" />
<PackageVersion Include="ConfKit" Version="1.0.0" />
<PackageReference Include="ConfKit" />
paket add ConfKit --version 1.0.0
#r "nuget: ConfKit, 1.0.0"
#:package ConfKit@1.0.0
#addin nuget:?package=ConfKit&version=1.0.0
#tool nuget:?package=ConfKit&version=1.0.0
ConfKit

ConfKit is a lightweight and extensible .NET library for parsing and generating multiple configuration formats, including INI and UCI (OpenWrt Unified Configuration Interface).
It provides a consistent programming model, supports structured configuration access, and enables seamless conversion to JSON for strong typing and serialization.
🧩 Multi-format Support
- INI configuration parsing and generation
- UCI (OpenWrt) configuration parsing and generation
🏗 Structured Configuration Model
- Hierarchical sections and entries
- Strongly-typed object model
- Preserve structure and ordering
🔄 JSON Interoperability
- Convert configurations to
JsonObject - Deserialize into custom strongly-typed classes
- Flexible integration with
System.Text.Json
⚡ Developer Friendly
- Simple and intuitive API
- Works with
netstandard2.0and modern .NET versions - Easy to extend for additional formats (TOML, YAML, etc.)
| TargetFramework(s) | Package | |
|---|---|---|
| ConfKit |
Installation
dotnet add package ConfKit
🚀 Usage
INI Support
Parse INI Content
string iniContent = @"
[server.database]
host = localhost
port = 1433";
var config = IniParser.Parse(iniContent);
string host = config.Sections
.First(s => s.Name == "server")
.SubSections.First(s => s.Name == "database")
.Entries.First(e => e.Key == "host").Value;
Create INI Configuration
var config = new IniConfig
{
Entries =
[
new IniEntry("debug", "true"),
],
Sections =
[
new IniSection("server")
{
SubSections =
[
new IniSection("database")
{
Entries =
[
new IniEntry("host", "localhost"),
new IniEntry("port", "1433")
],
},
],
},
],
};
string output = config.ToString();
UCI Support
Parse UCI Configuration
string configContent = @"
package network
config interface 'lan'
option type 'bridge'
option ifname 'eth0'
option proto 'static'
";
var config = UciParser.Parse(configContent);
Console.WriteLine(config.PackageName);
Create UCI Configuration
var config = new UciConfig
{
PackageName = "network",
Sections =
[
new UciSection("interface", "lan")
{
Options =
[
new UciOption("type", "bridge"),
new UciOption("ifname", "eth0"),
new UciOption("proto", "static")
]
}
]
};
string output = config.ToString();
🔄 JSON Conversion & Strong Typing
Both INI and UCI configurations can be converted into a JsonObject, making it easy to deserialize into custom types.
Example
var config = IniParser.Parse(iniContent);
// Convert to JSON object
JsonObject json = config.ToSerializableJsonObject();
// Deserialize to custom type
var options = new JsonSerializerOptions
{
NumberHandling = JsonNumberHandling.AllowReadingFromString
};
var result = json.Deserialize<MyConfig>(options);
TODO
- Add support for reading and writing comments (current parser just ignores comments)
License
MIT License
Contributing
Contributions are welcome! Please open an issue or submit a pull request for any improvements or bug fixes.
| 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 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 is compatible. 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 is compatible. 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
- System.Text.Json (>= 10.0.5)
-
net10.0
- No dependencies.
-
net8.0
- No dependencies.
-
net9.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 | 111 | 3/31/2026 |