Cómo cambiar de configuración de la aplicación en tiempo de ejecución
-
23-08-2019 - |
Pregunta
Estoy intentando cambiar en tiempo de ejecución de una llave de mi archivo de configuración de aplicaciones, pero no funciona.
que hago en esta forma:
ConfigurationSettings.AppSettings["XPTO"] = "HELLO";
Parece que sólo cambia en la memoria, no en el archivo.
¿Alguien sabe cómo hacer esto?
Gracias.
Solución
Tome un vistazo a mi visión general de Los archivos de configuración de .NET ... En resumen, creo que quieres un entorno de ámbito de usuario. Se comportará más como usted espera.
Editar Si está utilizando la configuración de diseño en Visual Studio , entonces simplemente cambiar el 'Ámbito de aplicación' a 'usuario'. Si no, usted debe ser capaz de hacer el equivalente mediante programación.
Otros consejos
El archivo AppSettings no está diseñado para ser modificable. Está diseñado para almacenar configuraciones que no va a cambiar en tiempo de ejecución, pero podría cambiar con el tiempo, es decir:. Cadenas de conexión DB, de dirección URL del servicio web, etc.
Por lo tanto, si bien puede ser posible actualizar el archivo en realidad debe volver a evaluar si este valor debe ser almacenado allí.
Asumiendo que su aplicación tiene permisos de escritura en el archivo ...
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // the config that applies to all users
AppSettingsSection appSettings = config.AppSettings;
if (appSettings.IsReadOnly() == false)
{
appSettings("Key").Value = "new value";
config.Save();
}
Estoy haciendo caso omiso de todas las posibles excepciones que pueden ser lanzadas ...