Uso de Visual C# para almacenar y recuperar información personalizada de un archivo de configuración de la aplicación

En este artículo se presenta cómo almacenar información personalizada de un archivo de configuración que puede recuperar más adelante durante el tiempo de ejecución por su aplicación asociada. Resulta útil cuando se deben definir los datos asociados a una aplicación.

Versión original del producto: Visual C#
Número de KB original: 815786

Requisitos

En la lista siguiente se describen el hardware y el software recomendados que necesita:

  • Microsoft Windows
  • Visual C#

En este artículo se supone que está familiarizado con los temas siguientes:

  • Lenguaje de marcado extensible (XML)
  • Archivos de configuración de .NET

Creación de una aplicación de consola que lea un archivo de configuración

Puede almacenar la configuración de la aplicación en el archivo de configuración asociado a la aplicación. Los archivos de configuración se guardan en formato XML.

Los System.Configuration espacios de nombres y System.Collections.Specialized de .NET Framework incluyen las clases necesarias para recuperar información de un archivo de configuración de aplicación .NET durante el tiempo de ejecución.

Para crear una aplicación de consola que lea el contenido de un archivo de configuración asociado durante el tiempo de ejecución, siga estos pasos:

  1. Inicie Visual Studio .NET o Visual Studio.

  2. En el menú Archivo, seleccione Nuevo y luego Proyecto.

  3. seleccione Visual C# en Tipos de proyecto y, a continuación, seleccione Aplicación de consola en Plantillas. Asigne al proyecto el nombre ConConfig. De forma predeterminada, Visual C# crea una clase denominada Program.

    Nota:

    En Visual Studio .NET, seleccione Proyectos de Visual C# en Tipos de proyecto y, a continuación, seleccione Aplicación de consola en Plantillas. Asigne al proyecto el nombre ConConfig. De forma predeterminada, Visual C# crea una clase denominada Class1.

  4. Asegúrese de que la ventana de Explorador de soluciones esté visible. Si no está visible, presione la combinación de teclas CTRL+ALT+L.

  5. En Explorador de soluciones, haga clic con el botón derecho en el nombre del proyecto, seleccione Agregar y, a continuación, seleccione Nuevo elemento.

  6. En la lista Agregar nuevo elemento , seleccione Archivo XML.

  7. En el cuadro de texto Nombre , escriba App.configy, a continuación, seleccione Agregar.

  8. Puede usar un archivo de configuración de aplicación para recopilar valores de aplicación personalizados que guarde en formato de clave/valor. Puede incluir <add> elementos en la <appSettings> sección de un archivo de configuración asociado. Cada par clave-valor tiene un <add> elemento. Un <add> elemento tiene el formato siguiente:

    <add key="Key0" value="0" />
    

    Agregue una <appSettings> sección con <add> elementos al archivo de configuración entre las <configuration> etiquetas y </configuration> .

    Por ejemplo, el siguiente archivo de configuración incluye una <appSettings> sección que especifica tres pares clave-valor:

    <?xml version="1.0" encoding="utf-8" ?>
    <configuration>
        <appSettings>
            <add key="Key0" value="0" />
            <add key="Key1" value="1" />
            <add key="Key2" value="2" />
        </appSettings>
    </configuration>
    
  9. En Explorador de soluciones, haga doble clic en Program.cs para mostrar la ventana de código. Agregue las siguientes instrucciones al módulo de código.

    Nota:

    Estas instrucciones deben aparecer antes que cualquier otra instrucción del archivo.

    using System.Configuration;
    using System.Collections.Specialized;
    
  10. Agregue una referencia a System.Configuration.dll siguiendo estos pasos:

    1. En el menú Proyecto , seleccione Agregar referencia.
    2. En el cuadro de diálogo Agregar referencia , seleccione la pestaña .NET .
    3. Busque y seleccione el nombre del componente de System.Configuration.
    4. seleccione Aceptar.
  11. Para contener el valor de una clave de archivo de configuración en la <appSettings> sección del archivo de configuración, declare una variable de cadena en la sección de la Main siguiente manera:

    string sAttr;
    
  12. Para recuperar un valor de una clave especificada de la <appSettings> sección del archivo de configuración, use el Get método de la AppSettings propiedad de la ConfigurationManager clase . La ConfigurationManager clase está en el espacio de System.Configuration nombres. Cuando el AppSettings.Get método recibe un parámetro de entrada de cadena que contiene una clave, la aplicación recupera el valor asociado a la clave.

    El código siguiente recupera el valor del Key0 atributo del archivo de configuración asociado. A continuación, el código coloca este valor en la variable de sAttr cadena. Si no existe una clave para este valor, no se almacena nada en sAttr.

    sAttr = ConfigurationManager.AppSettings.Get("Key0");
    
  13. Para mostrar el valor que la aplicación recupera en la ventana Consola, use Console.WriteLine como se indica a continuación:

    Console.WriteLine("The value of Key0 is "+sAttr);
    
  14. Puede usar una referencia a la AppSettings propiedad para recuperar todos los pares clave-valor de la <appSettings> sección. Cuando se usa la AppSettings propiedad , la aplicación devuelve todos los pares clave-valor asociados. Estos pares se almacenan en un NameValueCollection tipo. NameValueCollection contiene entradas de clave/valor para cada clave que recupera la aplicación. La NameValueCollection clase está en el espacio de System.Collections.Specialized nombres.

    NameValueCollection sAll ;
    sAll = ConfigurationManager.AppSettings;
    
  15. La AllKeys propiedad de NameValueCollection hace referencia a una matriz de cadenas que tiene una entrada para cada clave que recupera la aplicación. Use una construcción foreach para recorrer en iteración la AllKeys matriz para acceder a cada clave que recupera la aplicación. Cada entrada de clave de AllKeys es un tipo de datos de cadena.

    Dentro de la foreach construcción, use Console.WriteLine para mostrar la clave y su valor asociado en la ventana Consola. La clave actual que procesa la aplicación está en s. Úselo como índice de sAllNameValueCollection para obtener su valor asociado.

     foreach (string s in sAll.AllKeys)
         Console.WriteLine("Key: "+ s + " Value: " + sAll.Get(s));
    
     Console.ReadLine();
    

Lista de código completa

using System;
using System.Configuration;
using System.Collections.Specialized;

namespace ConConfig
{
    class Program
    {
        static void Main(string[] args)
        {
            string sAttr;

            // Read a particular key from the config file 
            sAttr = ConfigurationManager.AppSettings.Get("Key0");
            Console.WriteLine("The value of Key0: " + sAttr);

            // Read all the keys from the config file
            NameValueCollection sAll;
            sAll = ConfigurationManager.AppSettings;

            foreach (string s in sAll.AllKeys)
                Console.WriteLine("Key: " + s + " Value: " + sAll.Get(s));

            Console.ReadLine();
        }
    }
}

Nota:

Este código tiene como destino .NET Framework 2.0. Si usa .NET Framework 1.0 o .NET Framework 1.1, cambie todas las instancias de la ConfigurationManager clase a ConfigurationSettings.

Lista completa de archivos de configuración (ConConfig.exe.config)

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <appSettings>
        <add key="Key0" value="0" />
        <add key="Key1" value="1" />
        <add key="Key2" value="2" />
    </appSettings>
</configuration>

Comprobar que funciona

Presione F5 para que se ejecute el código. La ventana Consola debe mostrar los pares clave-valor de la <appSettings> sección del archivo de configuración asociado de la siguiente manera:

The value of Key0: 0
Key: Key0 Value:0
Key: Key1 Value:1
Key: Key2 Value:2

Solucionar problemas

  • El archivo de configuración se guarda en formato XML. Asegúrese de seguir todas las reglas de sintaxis XML. Recuerde que XML distingue mayúsculas de minúsculas. Si el XML no está bien formado o si un elemento está mal escrito, recibirá una System.Configuration.Configuration excepción.

    Por ejemplo, si agrega el atributo key de un <add> elemento con una K mayúscula en lugar de una k minúscula, o si la <appSettings> sección aparece como <AppSettings> (con una A mayúscula en lugar de una minúscula a), recibirá un mensaje de error.

  • El archivo de configuración debe guardarse en la misma carpeta que su aplicación asociada.

  • Debe usar la sintaxis siguiente para el nombre del archivo de configuración:
    <ApplicationName>.<ApplicationType>.config

    Donde <ApplicationName> es el nombre de la aplicación. <ApplicationType> es el tipo de aplicación, como .exe. Y .config es el sufijo necesario.

Referencias