Saltar al contenido

¿Cómo puedo leer/escribir la configuración de app.config en tiempo de ejecución sin usar la configuración del usuario?

Te sugerimos que revises esta resolución en un ambiente controlado antes de enviarlo a producción, saludos.

Solución:

Bueno, todavía no he querido cambiar la configuración de la aplicación en tiempo de ejecución (para eso uso la configuración de usuario), pero lo que he podido hacer es escribir la configuración de la aplicación en el momento de la instalación. Me imagino que un enfoque similar podría funcionar en tiempo de ejecución. Podría probarlo ya que no parece haber ninguna otra solución ATM propuesta.

    exePath = Path.Combine( exePath, "MyApp.exe" );
    Configuration config = ConfigurationManager.OpenExeConfiguration( exePath );
    var setting = config.AppSettings.Settings[SettingKey];
    if (setting != null)
    
        setting.Value = newValue;
    
    else
    
        config.AppSettings.Settings.Add( SettingKey, newValue);
    

    config.Save();

¡Espero que ayude!

Este es el método que le permite cambiar las entradas en el :

    internal static bool SetSetting(string Key, string Value)
    
        bool result = false;
        try
        
            System.Configuration.Configuration config =
              ConfigurationManager.OpenExeConfiguration(
                                   ConfigurationUserLevel.None);

            config.AppSettings.Settings.Remove(Key); 
            var kvElem= new KeyValueConfigurationElement(Key, Value);
            config.AppSettings.Settings.Add(kvElem);

            // Save the configuration file.
            config.Save(ConfigurationSaveMode.Modified);

            // Force a reload of a changed section.
            ConfigurationManager.RefreshSection("appSettings");                

            result = true;
        
        finally
         
        return result;
     // function

Nota que he encontrado es necesario refrescar la sección appSettings después de la actualización.

La función elimina un key antes de agregarlo para evitar entradas dobles. Esto funciona también si el key no existe previamente. Si hay algún error vuelve falsesobre el éxito true. El método para leer la configuración es trivial y solo se enumera para completar:

    internal static string GetSetting(string Key)
    
        string result = null;
        try
        
            result = ConfigurationManager.AppSettings[Key];
        
        finally
         
        return result;
     // function

Nota que lo he rodeado de un intentar … finalmente bloque para suprimir errores. Si se produce algún error, GetSetting simplemente devuelve null mientras SetSetting regresa false. Eso facilita el manejo, sin embargo, si necesita las excepciones, aún puede agregar

        catch (Exception)  throw; 

para lanzar la excepción a la persona que llama. O, para la depuración, podría agregar:

        #if DEBUG
        catch (Exception ex)  
                System.Diagnostics.Debug.WriteLine(ex.ToString()); 
        
        #endif

Que mostrará la excepción en el Producción ventana de Visual Studio si ha seleccionado la configuración “Depurar”, pero continuará con el código.


Nota (referencia cruzada a un tema similar):

  • Él Configuraciones de la aplicación La sección es diferente, ya que distingue entre el alcance de “Usuario” y “Aplicación” y admite diferentes tipos de datos, no solo cadenas. Si quieres saber cómo puedes manejar Configuraciones de la aplicaciónpuede encontrarlo aquí (en stackoverflow):
    como acceder Configuraciones de la aplicación

  • Si no está seguro de si debe usar AppSettings o applicationSettingsentonces Lee esto antes de que lo decidas.

  • Si encuentra la advertencia 'ConfigurationSettings.AppSettings' is obsoleteentonces esta pista te puede ayudar.

  • Si estás usando el Núcleo de .NET marco, echa un vistazo a este enlace: AppSettings en .NET Core

Las aplicaciones WPF pueden acceder al archivo app.config al igual que las aplicaciones WinForms a través del

ConfigurationManager.OpenExeConfiguration()

método. El truco es tener los valores a los que desea acceder en la etiqueta AppSettings de su archivo App.config (también disponible en aplicaciones WPF).

El truco de todo esto es asegurarse de llamar a los siguientes métodos cuando haya terminado de modificar sus propiedades:

MyConfig.Save(ConfigurationSaveMode.Modified)
ConfigurationManager.RefreshSection("appSettings")

Escribí un “cómo” completo sobre esto hace un tiempo que lo explica todo aquí.

Te mostramos reseñas y valoraciones

Si aceptas, tienes la habilidad dejar una crónica acerca de qué te ha parecido esta crónica.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *