ConfKit 1.0.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package ConfKit --version 1.0.1
                    
NuGet\Install-Package ConfKit -Version 1.0.1
                    
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="ConfKit" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="ConfKit" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="ConfKit" />
                    
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 ConfKit --version 1.0.1
                    
#r "nuget: ConfKit, 1.0.1"
                    
#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 ConfKit@1.0.1
                    
#: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=ConfKit&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=ConfKit&version=1.0.1
                    
Install as a Cake Tool

ConfKit LICENSE Build

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.0 and modern .NET versions
  • Easy to extend for additional formats (TOML, YAML, etc.)
TargetFramework(s) Package
ConfKit netstandard2.0 net8.0 net9.0 net10.0 alternate text is missing from this package README image

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 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 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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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.2 113 8/21/2026
1.0.1 105 8/20/2026
1.0.0 150 3/31/2026