Uso de Visual C# para almacenar y recuperar información personalizada de un archivo de configuración de 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 mediante su aplicación asociada. Resulta útil cuando debe definir los datos asociados a una aplicación.
Nota:
El código de este artículo tiene como destino .NET Framework 2.0 y versiones posteriores. Para saber a qué versiones específicas se aplica la ConfigurationManager
clase, consulte la sección Se aplica a .
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 da por supuesto 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:
Inicie Visual Studio .NET o Visual Studio.
En el menú Archivo , seleccione Nuevoy haga clic en Proyecto.
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.
Asegúrese de que la ventana Explorador de soluciones esté visible. Si no está visible, presione la combinación de teclas CTRL+ALT+L.
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.
En la lista Agregar nuevo elemento , seleccione Archivo XML.
En el cuadro de texto Nombre , escriba App.config y, a continuación, seleccione Agregar.
Puede usar un archivo de configuración de aplicación para recopilar la configuración de la aplicación personalizada 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>
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 de cualquier otra instrucción del archivo.
using System.Configuration; using System.Collections.Specialized;
Agregue una referencia a System.Configuration.dll siguiendo estos pasos:
- En el menú Proyecto, seleccione Agregar referencia.
- En el cuadro de diálogo Agregar referencia , seleccione la pestaña .NET .
- Busque y seleccione el nombre del componente de
System.Configuration
. - seleccione Aceptar.
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 laMain
sección como se indica a continuación:string sAttr;
Para recuperar un valor para una clave especificada de la
<appSettings>
sección del archivo de configuración, use elGet
método de la propiedad de laAppSettings
clase ConfigurationManager. La claseConfigurationManager
está en el espacio de nombresSystem.Configuration
. Cuando elAppSettings.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 desAttr
cadena. Si no existe una clave para este valor, no se almacena nada ensAttr
.sAttr = ConfigurationManager.AppSettings.Get("Key0");
Para mostrar el valor que recupera la aplicación en la ventana Consola, use
Console.WriteLine
como se indica a continuación:Console.WriteLine("The value of Key0 is "+sAttr);
Puede usar una referencia a la
AppSettings
propiedad para recuperar todos los pares clave-valor de la<appSettings>
sección. Cuando se usa laAppSettings
propiedad , la aplicación devuelve todos los pares clave-valor asociados. Estos pares se almacenan en unNameValueCollection
tipo.NameValueCollection
contiene entradas de clave y valor para cada clave que recupera la aplicación. La claseNameValueCollection
está en el espacio de nombresSystem.Collections.Specialized
.NameValueCollection sAll ; sAll = ConfigurationManager.AppSettings;
La
AllKeys
propiedad de hace referencia a una matriz deNameValueCollection
cadenas que tiene una entrada para cada clave que recupera la aplicación. Use una construcción foreach para recorrer en iteración laAllKeys
matriz para acceder a cada clave que recupera la aplicación. Cada entrada de clave deAllKeys
es un tipo de datos de cadena.Dentro de la
foreach
construcción, useConsole.WriteLine
para mostrar la clave y su valor asociado en la ventana Consola. La clave actual que procesa la aplicación está ens
. Úselo como índice ensAllNameValueCollection
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();
}
}
}
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>
Comprobación de que funciona
Presione F5 para ejecutar 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
Solución de 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 de clave de un
<add>
elemento con una K mayúscula en lugar de un k en minúsculas, 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.