¿Cómo leer y escribir parámetros de configuración en C#?

Toda aplicación que se respete debe incluir algún modo de persistir su configuración de una ejecución a la otra.  Aún si esto no fuera necesario, es buena práctica no codificar dentro de la aplicación los valores que utilizará por defecto, o parámetros que cambian de una máquina a otra, por ejemplo, las cadenas de conexión a las bases de datos.  En C# esto es super sencillo de lograr a partir de:

  1. Archivos de configuración estilo XML: en aplicaciones web se nombran “web.config” y en desktop “app.config”.  En general, contienen un conjunto de pares parámetro-valor.
  2. Un grupo de funciones suministradas por el namespace System.Configuration.

Ejemplo de archivo de configuración:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings file="">
    <clear />
    <add key="miParametro" value="Mi valor" />
  </appSettings>
</configuration>

Paso a paso:

  • Añadir al proyecto una referencia a “System.Configuration” (Project -> Add Reference …).
  • Añadir al código:  “using System.Configuration”.
  • Para leer un parámetro de configuración:
string miValor = ConfigurationManager.AppSettings["miParametro"];
  • Para añadir un parámetro nuevo al archivo de configuración:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Add("miParametro", "Mi valor");
config.Save(ConfigurationSaveMode.Modified);
  • Para modificar y persistir un parámetro de configuración:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["miParametro"].Value = "Mi valor";
config.Save(ConfigurationSaveMode.Modified);

Nota: en las operaciones de escritura (añadir y modificar) desde Visual Studio, el instinto nos lleva inmediatamente a revisar los cambios en el archivo original “app.config” (asumiendo aplicación desktop).  Este contiene los parámetros iniciales de configuración; el archivo que se modifica realmente es nombre_de_app.exe.Config que está en la carpeta bin\Debug que es el archivo real de configuración cuando se distribuye la aplicación.

Aquí he mostrado el método de trabajo más sencillo con configuraciones en .NET.  Los archivos de configuración pueden llegar a ser muy sofisticados permitiendo la categorización de los parámetros en secciones, por ejemplo <connectionStrings> para las cadenas de conexión a bases de datos.  Realmente, los ejemplos anteriores operan sobre los parámetros correspondientes a una sección específica <appSettings>, lo cual es suficiente para una gran mayoría de las aplicaciones prácticas.