Library implemented in .NET using C# that helps developers to deserialize or serialize INI files and strings. It is compatible with a large range of .NET framework versions, from desktop, to mobile and servers.
This library can be installed via NuGet package. Just run the following command:
Install-Package SimpleSoft.IniParser -PreThe most recent version is in Release Candidate 1. It is considered very stable, just missing some extension methods to make it simpler to manage IniContainer, IniSection or IniProperties instances and compatibility with older PCL.
This library is compatible with the folowing frameworks:
- .NET Framework 4.5
- .NET Core 5.0;
- .NET Standard 1.0;
using System;
using Microsoft.Extensions.Logging;
using SimpleSoft.IniParser.Impl;
namespace SimpleSoft.IniParser.Examples
{
public class BasicExample : IExample
{
private readonly ILogger<BasicExample> _logger;
public BasicExample(ILogger<BasicExample> logger)
{
_logger = logger;
}
public void Run()
{
const string initialIni = @"
;This is a comment
SomeGP=This is a global property
[SomeSection]
;This is a comment inside a section
SomeSP=This is a property inside a section
[AnotherSection]
;Another comment...
AnotherSP=More?
Response=YES!!!
";
_logger.LogInformation("Initial INI string: '{initialIniString}'", initialIni);
_logger.LogDebug("Deserializing string as an IniContainer...");
var deserializer = new IniDeserializer
{
Options = {NormalizeAfterDeserialization = false}
};
var iniContainer = deserializer.DeserializeAsContainer(initialIni);
_logger.LogDebug("Normalizing IniContainer...");
var normalizer = new IniNormalizer();
iniContainer = normalizer.Normalize(iniContainer);
_logger.LogDebug("Serializing IniContainer as a string...");
var serializer = new IniSerializer
{
Options = {EmptyLineBeforeSection = true, NormalizeBeforeSerialization = false}
};
var finalIni = serializer.SerializeAsString(iniContainer);
_logger.LogInformation("Final INI string: " + Environment.NewLine + "'{finalIniString}'", finalIni);
/*
;This is a comment
SOMEGP=This is a global property
[SOMESECTION]
;This is a comment inside a section
SOMESP=This is a property inside a section
[ANOTHERSECTION]
;Another comment...
ANOTHERSP=More?
RESPONSE=YES!!!
*/
}
}
}using System;
using Microsoft.Extensions.Logging;
using SimpleSoft.IniParser.Impl;
namespace SimpleSoft.IniParser.Examples
{
public class DefaultGlobalInstanceExample : IExample
{
private readonly ILogger<DefaultGlobalInstanceExample> _logger;
public DefaultGlobalInstanceExample(ILogger<DefaultGlobalInstanceExample> logger)
{
_logger = logger;
}
public void Run()
{
const string initialIni = @"
;This is a comment
SomeGP=This is a global property
[SomeSection]
;This is a comment inside a section
SomeSP=This is a property inside a section
[AnotherSection]
;Another comment...
AnotherSP=More?
Response=YES!!!
";
_logger.LogInformation("Initial INI string: '{initialIniString}'", initialIni);
_logger.LogDebug("Deserializing string as an IniContainer...");
var iniContainer = IniDeserializer.Default.DeserializeAsContainer(initialIni);
_logger.LogDebug("Normalizing IniContainer...");
iniContainer = IniNormalizer.Default.Normalize(iniContainer);
_logger.LogDebug("Serializing IniContainer as a string...");
var finalIni = IniSerializer.Default.SerializeAsString(iniContainer);
_logger.LogInformation("Final INI string: " + Environment.NewLine + "'{finalIniString}'", finalIni);
/*
;This is a comment
SOMEGP=This is a global property
[SOMESECTION]
;This is a comment inside a section
SOMESP=This is a property inside a section
[ANOTHERSECTION]
;Another comment...
ANOTHERSP=More?
RESPONSE=YES!!!
*/
}
}
}