Como Crear un App.Config para una Aplicacion .NET Compact Framework

La actual versión del .NET Compact Framework (viene con Visual Studio .NET 2003) no ofrece la capacidad de acceder a un archivo de configuración App.Config como lo hace una aplicación .NET Windows Form.

Si deseas obtener la misma funcionalidad, simplemente carga el archivo de configuración en un XmlDocument y transforma el documento xml en una NameValueCollection. A partir de eso, puedes referenciar la colección AppSettings para recuperar el valor por el nombre de clave.

Revisemos el siguiente ejemplo.

Es importante anotar que necesitarás incluir el archivo App.Config en tu proyecto y configurar las propiedades del archivo para ser considerado Content (contenido).

Esto asegura que tu archivo sea incluido con la distribución.


App.Config de muestra

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
   <appSettings>
      <add key="Item1" value="value of item 1" />
      <add key="Item2" value="value of item 2" />
      <add key="Item3" value="value of item 3" />
   </appSettings>
</configuration>

Codigo de ejemplo (C#)

using System;
using System.Collections.Specialized;
using System.Xml;
using System.IO;

public class ConfigurationSettings
{

public static NameValueCollection AppSettings;

public static void LoadConfig()
{
try
{

string AppPath = Path.GetDirectoryName( Assembly.GetExecutingAssembly().GetName().CodeBase);
string ConfigFile = Path.Combine(AppPath,"App.config");

if(File.Exists(ConfigFile) == false)
{
System.Windows.Forms.MessageBox.Show("Config file does not exist");
Application.Exit();
return;
}

XmlDocument oXml = new XmlDocument();

oXml.Load(ConfigFile);

XmlNodeList oList = oXml.GetElementsByTagName("appSettings");

AppSettings = new NameValueCollection();

foreach(XmlNode oNode in oList)
{
foreach(XmlNode oKey in oNode.ChildNodes)
{
AppSettings.Add(oKey.Attributes["key"].Value, oKey.Attributes["value"].Value);
}
}

System.Windows.Forms.MessageBox.Show(ConfigurationSettings.AppSettings["Item1"]);

}
catch (Exception) { throw; }
}

}

1 comentario:

rc dijo...

Muy bueno el tutorial muchas gracias! :):):):):):)