.Net nos ofrece varias alternativas para guardar la configuración de usuario, cómo la serialización de datos, la infrastructura My.Settings, o recurrir al registro de windows, sin embargo, y al menos para mi, un archivo de inicialización (archivo.INI) sigue siendo la mejor forma para portabilizar la configuración de un software, ya que el formato es muy amistoso de cara al end-user (¿quien no sabe editar un INI?), es perfecto para desarrollar software portable y mantener la misma configuración de usuario al copiarlo de un PC a otro, así que he ideado este algoritmo en conjunción para la manipulación de archivos INI usando código administrado (un parser de cosecha propia, sin recurrir a código no administrado con las funciones de la API de Windows que leen archivos INI).
El resultado de todo esto es bastante código, un Type para representar una sección INI, otro Type para representar una llave de una sección INI, etc, pero solo es necesario copiar y pegar todo el código que he desarrollado, ya que su utilización es tan simple como lo que voy a mostrar a continuación...
Ejemplo de uso para crear un INI con una sección y un valor booleano:
Dim ini As New IniManager("C:\File.ini", Encoding.Default)
With ini
.Clear()
.Sections.Add("SectionName")
.Sections("SectionName").Keys.Add("KeyName", value:="", comment:="Commentary")
.Sections("SectionName").Keys("KeyName").Value = "True"
.Save()
End With
Console.WriteLine(ini.ToString)
(http://i.imgur.com/cu3lwyx.png)
Para obtener el valor, lo hariamos así:
Dim setting As Boolean = CBool(ini.Sections("SectionName").Keys("KeyName").Value)
Tiene métodos de búsqueda de secciones y llaves, y demás.
IniSection, representa una sección INI:
http://pastebin.com/8mJUZ2Nb
IniKey, representa una llave INI:
http://pastebin.com/eE1ZSnFG
IniSectionCollection, representa una colección de secciones INI:
http://pastebin.com/jcFJ0yYd
IniKeyCollection, representa una colección de llaves INI:
http://pastebin.com/CLfBtB1h
IniManager, lo más importante, la class que administra de manera abstracta los Types mencionados para la manipulación de un archivo INI:
http://pastebin.com/xgy93Saq
Espero que a alguien más le sirva.
Saludos!