La forma más sencilla de tener un archivo de configuración en una aplicación Windows Forms C#

StackOverflow https://stackoverflow.com/questions/114527

Pregunta

Soy realmente nuevo en .NET y todavía no entiendo cómo funcionan los archivos de configuración.

Cada vez que busco en Google, obtengo resultados sobre web.config, pero estoy escribiendo una aplicación de formularios de Windows.

Descubrí que necesito usar el espacio de nombres System.Configuration pero la documentación no ayuda.

¿Cómo defino que mi archivo de configuración es XYZ.xml?¿O tiene un nombre "predeterminado" para el archivo de configuración?Todavía no entendí eso.

Además, ¿cómo defino una nueva sección? ¿Realmente necesito crear una clase que herede de ConfigurationSection?

Me gustaría tener simplemente un archivo de configuración con algunos valores como este:

<MyCustomValue>1</MyCustomValue>
<MyCustomPath>C:\Some\Path\Here</MyCustomPath>

¿Existe una forma sencilla de hacerlo?¿Puedes explicar de forma sencilla cómo leer y escribir desde/hacia un archivo de configuración simple?

¿Fue útil?

Solución

Quieres utilizar una App.Config.

Cuando agrega un nuevo elemento a un proyecto, hay algo llamado archivo de configuración de aplicaciones.Añade eso.

Luego agregas claves en la sección de configuración/appsettings

Como:

<configuration>
 <appSettings>
  <add key="MyKey" value="false"/>

Accede a los miembros haciendo

System.Configuration.ConfigurationSettings.AppSettings["MyKey"];

Esto funciona en .net 2 y superiores.

Otros consejos

Aclaración de respuestas anteriores...

1) Agregue un nuevo archivo a su proyecto (Agregar->Nuevo elemento->Archivo de configuración de la aplicación)

2) El nuevo archivo de configuración aparecerá en el Explorador de soluciones como App.Config.

3) Agregue su configuración a este archivo usando lo siguiente como plantilla

<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

4) Recupérelos así:

private void Form1_Load(object sender, EventArgs e)
{
    string setting = ConfigurationManager.AppSettings["setting1"];
    string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
}

5) Cuando se compila, su carpeta de salida contendrá un archivo llamado <nombre del ensamblado>.exe.config. Esta será una copia del archivo App.Config.El desarrollador no debería necesitar realizar ningún trabajo adicional para crear este archivo.

De una lectura rápida de las respuestas anteriores, parecen correctas, pero no parece que nadie haya mencionado las nuevas funciones de configuración en VS 2008.Todavía usa app.config (copiado en tiempo de compilación en YourAppName.exe.config), pero hay un widget de interfaz de usuario para establecer propiedades y especificar sus tipos.Haga doble clic en Configuración.settings en la carpeta "Propiedades" de su proyecto.

La mejor parte es que acceder a esta propiedad desde el código es seguro: el compilador detectará errores obvios, como escribir mal el nombre de la propiedad.Por ejemplo, se accedería a una propiedad llamada MyConnectionString en app.config de la siguiente manera:

string s = Properties.Settings.Default.MyConnectionString;

Debes crear un archivo App.config (muy similar a web.config)

Debe hacer clic derecho en su proyecto, agregar un nuevo elemento, un nuevo "Archivo de configuración de la aplicación".

Asegúrese de agregar el uso de System.Configuration a su proyecto.

Entonces puedes agregarle valores.

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <appSettings>
    <add key="setting1" value="key"/>
  </appSettings>
  <connectionStrings>
    <add name="prod" connectionString="YourConnectionString"/>
  </connectionStrings>
</configuration>

    private void Form1_Load(object sender, EventArgs e)
    {
        string setting = ConfigurationManager.AppSettings["setting1"];
        string conn = ConfigurationManager.ConnectionStrings["prod"].ConnectionString;
    }

Solo una nota, según microsoft, debe utilizar ConfigurationManager en lugar de ConfigurationSettings.(Consulte la sección Observaciones) "La clase ConfigurationSettings proporciona solo compatibilidad hacia atrás.Para aplicaciones nuevas, debe utilizar la clase ConfigurationManager o la clase WebConfigurationManager."

El nombre predeterminado de un archivo de configuración es [yourexe].exe.config.Entonces notepad.exe tendrá un archivo de configuración llamado notepad.exe.config, en la misma carpeta que el programa.Este es un archivo de configuración general para todos los aspectos de CLR y Framework, pero puede contener sus propias configuraciones bajo un <appSettings> nodo.

El <appSettings> El elemento crea una colección de pares nombre-valor a los que se puede acceder como System.Configuration.ConfigurationSettings.AppSettings.Sin embargo, no hay forma de guardar los cambios en el archivo de configuración.

También es posible agregar sus propios elementos personalizados a un archivo de configuración (por ejemplo, para definir una configuración estructurada) creando una clase que implemente IConfigurationSectionHandler y agregándolo al <configSections> elemento del archivo de configuración.Luego podrás acceder llamando ConfigurationSettings.GetConfig.

.NET 2.0 agrega una nueva clase, System.Configuration.ConfigurationManager, que admite múltiples archivos, con anulaciones por usuario de datos por sistema.También admite guardar configuraciones modificadas en archivos de configuración.

Visual Studio crea un archivo llamado App.config, que copia a la carpeta EXE, con el nombre correcto, cuando se construye el proyecto.

El mejor artículo (en mi humilde opinión) sobre la configuración de aplicaciones .NET está en CodeProject Desentrañando los misterios de la configuración de .NET 2.0.Y mi próximo artículo favorito (más breve) sobre secciones en archivos de configuración .net es Comprensión de los controladores de sección: archivo App.config.

En los formularios de Windows, tiene una app.config, que es muy similar a web.config.Pero como veo que lo necesitas para valores personalizados, te sugiero usar Configuración.Para hacer eso, abra las propiedades de su proyecto, luego vaya a configuración.Si no existe un archivo de configuración, tendrá un enlace para crear uno.Luego, puede agregar la configuración a la tabla que ve allí, lo que generaría tanto el XML apropiado como una clase de configuración que se puede usar para cargar y guardar la configuración.La clase de configuración se llamará algo así como DefaultNamespace.Properties.Settings.Luego, puedes usar un código similar a:

using DefaultNamespace.Properties;

namespace DefaultNamespace {
    class Class {
        public int LoadMySettingValue() {
            return Settings.Default.MySettingValue;
        }
        public void SaveMySettingValue(int value) {
            Settings.Default.MySettingValue = value;
        }
    }
}

Estoy de acuerdo con las otras respuestas que le dirigen a app.config.Sin embargo, en lugar de leer valores directamente desde app.config, debes crear una clase de utilidad (AppSettings es el nombre que uso) para leerlos y exponerlos como propiedades.La clase AppSettings se puede utilizar para agregar configuraciones de varios almacenes, como valores de app.config e información de la versión de la aplicación del ensamblado (AssemblyVersion y AssemblyFileVersion).

Una forma muy sencilla de hacerlo es utilizar su tu propia costumbre Settings clase.

System.Configuration.ConfigurationSettings.AppSettings["MiClave"];

AppSettings ha quedado obsoleto y ahora se considera obsoleto.[ enlace ]

Además, la sección appSettings de app.config ha sido reemplazada por la sección applicationSettings.

Como alguien más mencionó, debe usar System.Configuration.ConfigurationManager [ enlace ] que es nuevo para .Net 2.0

¿Qué versión de .Net y VS estás usando?

Cuando creó el nuevo proyecto, debería tener un archivo en su solución llamado app.config, que es el archivo de configuración predeterminado.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top