.NET Framework
Ajustes
Buscar..
AppSettings de ConfigurationSettings en .NET 1.x
Uso en desuso
La clase ConfigurationSettings fue la forma original de recuperar la configuración de un ensamblaje en .NET 1.0 y 1.1. Ha sido reemplazado por la clase ConfigurationManager y la clase WebConfigurationManager .
Si tiene dos claves con el mismo nombre en la sección de appSettings
de la aplicación del archivo de configuración, se utilizará la última.
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="keyName" value="anything, as a string"/>
<add key="keyNames" value="123"/>
<add key="keyNames" value="234"/>
</appSettings>
</configuration>
Programa.cs
using System;
using System.Configuration;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string keyValue = ConfigurationSettings.AppSettings["keyName"];
Debug.Assert("anything, as a string".Equals(keyValue));
string twoKeys = ConfigurationSettings.AppSettings["keyNames"];
Debug.Assert("234".Equals(twoKeys));
Console.ReadKey();
}
}
}
Leyendo AppSettings desde ConfigurationManager en .NET 2.0 y versiones posteriores
La clase ConfigurationManager es compatible con la propiedad AppSettings
, que le permite continuar leyendo la configuración de la sección de configuración de la appSettings
de un archivo de configuración de la misma manera que con .NET 1.x.
app.config
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<appSettings>
<add key="keyName" value="anything, as a string"/>
<add key="keyNames" value="123"/>
<add key="keyNames" value="234"/>
</appSettings>
</configuration>
Programa.cs
using System;
using System.Configuration;
using System.Diagnostics;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
string keyValue = ConfigurationManager.AppSettings["keyName"];
Debug.Assert("anything, as a string".Equals(keyValue));
var twoKeys = ConfigurationManager.AppSettings["keyNames"];
Debug.Assert("234".Equals(twoKeys));
Console.ReadKey();
}
}
}
Introducción al soporte de configuración de usuario y aplicación fuertemente tipado de Visual Studio
Visual Studio ayuda a administrar la configuración de usuarios y aplicaciones. El uso de este enfoque tiene estos beneficios sobre el uso de la sección de appSettings
de aplicaciones del archivo de configuración.
Los ajustes se pueden hacer fuertemente tipados. Cualquier tipo que pueda ser serializado puede usarse para un valor de configuración.
La configuración de la aplicación se puede separar fácilmente de la configuración del usuario. La configuración de la aplicación se almacena en un único archivo de configuración:
web.config
para sitios web y aplicaciones web, y app.config, renombrado como ensamblado .exe.config, donde ensamblaje es el nombre del ejecutable. La configuración del usuario (no utilizada por los proyectos web) se almacena en un archivouser.config
en la carpeta de datos de la aplicación del usuario (que varía con la versión del sistema operativo).La configuración de la aplicación de las bibliotecas de clase se puede combinar en un solo archivo de configuración sin riesgo de colisiones de nombres, ya que cada biblioteca de clase puede tener su propia sección de configuración personalizada.
En la mayoría de los tipos de proyectos, el Diseñador de propiedades del proyecto tiene una pestaña Configuración, que es el punto de partida para crear aplicaciones personalizadas y configuraciones de usuario. Inicialmente, la pestaña Configuración estará en blanco, con un solo enlace para crear un archivo de configuración predeterminado. Al hacer clic en los resultados del enlace en estos cambios:
Si no existe un archivo de configuración (
app.config
oweb.config
) para el proyecto, se creará uno.La pestaña Configuración se reemplazará con un control de cuadrícula que le permite crear, editar y eliminar entradas de configuración individuales.
En el Explorador de soluciones, se agrega un elemento de
Settings.settings
en la carpeta especial Propiedades. Al abrir este elemento se abrirá la pestaña Configuración.Se agrega un nuevo archivo con una nueva clase parcial en la carpeta
Properties
en la carpeta del proyecto. Este nuevo archivo se llamaSettings.Designer.__
(.cs, .vb, etc.), y la clase se llamaSettings
. La clase es generada por código, por lo que no debe editarse, pero la clase es una clase parcial, por lo que puede extender la clase poniendo miembros adicionales en un archivo separado. Además, la clase se implementa utilizando el patrón Singleton, exponiendo la instancia de singleton con la propiedad denominadaDefault
.
A medida que agrega cada nueva entrada a la pestaña Configuración, Visual Studio hace estas dos cosas:
Guarda la configuración en el archivo de configuración, en una sección de configuración personalizada diseñada para ser administrada por la clase Configuración.
Crea un nuevo miembro en la clase Configuración para leer, escribir y presentar la configuración en el tipo específico seleccionado en la pestaña Configuración.
Lectura de configuraciones fuertemente tipadas de la sección personalizada del archivo de configuración
A partir de una nueva clase de configuración y una sección de configuración personalizada:
Agregue una configuración de aplicación llamada ExampleTimeout, usando la hora System.Timespan, y establezca el valor en 1 minuto:
Guarde las Propiedades del proyecto, que guarda las entradas de la pestaña Configuración, y vuelve a generar la clase de Configuración personalizada y actualiza el archivo de configuración del proyecto.
Use la configuración del código (C #):
Programa.cs
using System;
using System.Diagnostics;
using ConsoleApplication1.Properties;
namespace ConsoleApplication1
{
class Program
{
static void Main()
{
TimeSpan exampleTimeout = Settings.Default.ExampleTimeout;
Debug.Assert(TimeSpan.FromMinutes(1).Equals(exampleTimeout));
Console.ReadKey();
}
}
}
Debajo de las sábanas
Busque en el archivo de configuración del proyecto para ver cómo se ha creado la entrada de configuración de la aplicación:
app.config (Visual Studio actualiza esto automáticamente)
<?xml version="1.0" encoding="utf-8"?>
<configuration>
<configSections>
<sectionGroup name="applicationSettings" type="System.Configuration.ApplicationSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
<section name="ConsoleApplication1.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
</sectionGroup>
</configSections>
<appSettings />
<applicationSettings>
<ConsoleApplication1.Properties.Settings>
<setting name="ExampleTimeout" serializeAs="String">
<value>00:01:00</value>
</setting>
</ConsoleApplication1.Properties.Settings>
</applicationSettings>
</configuration>
Tenga en cuenta que la sección de appSettings
no se utiliza. La sección applicationSettings
contiene una sección personalizada calificada para el espacio de nombres que tiene un elemento de setting
para cada entrada. El tipo de valor no se almacena en el archivo de configuración; Sólo es conocido por la clase de Settings
.
Mire en la clase Settings
para ver cómo usa la clase ConfigurationManager
para leer esta sección personalizada.
Settings.designer.cs (para proyectos C #)
...
[global::System.Configuration.ApplicationScopedSettingAttribute()]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Configuration.DefaultSettingValueAttribute("00:01:00")]
public global::System.TimeSpan ExampleTimeout {
get {
return ((global::System.TimeSpan)(this["ExampleTimeout"]));
}
}
...
Observe que se creó un DefaultSettingValueAttribute
para almacenar el valor ingresado en la pestaña Configuración del Diseñador de propiedades del proyecto. Si falta la entrada del archivo de configuración, en su lugar se usa este valor predeterminado.