none
Modifcar Archivo de Configuracion RRS feed

  • Pregunta

  • Hola. Estoy tratando de guardar una variable string en mi archivo de configuracion pero no está funcionando como si lo hace en otro proyecto

    Hice click derecho en mi proyecto, propiedades, configuración y agregué una variable de tipo string y le asigno un texto. Después uso esta función para modificarlo

    Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);

    config.AppSettings.Settings.Remove("Tema"); config.AppSettings.Settings.Add("Tema", "Oscuro"); config.Save(ConfigurationSaveMode.Modified);


    El problema es que cuando pongo el cursor sobre el config.AppSetting.Setting (antes de hacer el remove) me dice que no tengo ningún parámetro agregado (siendo que lo agregué al principio).

    El archivo App.config me aparece así (con la variable que yo cree manualmente)

    <?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="Sistema.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
            </sectionGroup>
        </configSections>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
        </startup>
        <applicationSettings>
            <Sistema.Properties.Settings>
                <setting name="Tema" serializeAs="String">
                    <value>Claro</value>
                </setting>
            </Sistema.Properties.Settings>
        </applicationSettings>
    </configuration>

    Pero la variable que creo con código me aparece dentro del archivo Sistema.exe.Config

    <?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="Sistema.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission="false" />
            </sectionGroup>
        </configSections>
        <appSettings>
            <add key="Tema" value="Oscuro" />
        </appSettings>
        <startup> 
            <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.1" />
        </startup>
        <applicationSettings>
            <Sistema.Properties.Settings>
                <setting name="Tema" serializeAs="String">
                    <value>Claro</value>
                </setting>
            </Sistema.Properties.Settings>
        </applicationSettings>
    </configuration>

    En ese archivo me aparecen las dos, la que cree manualmente y la que cree con código. Porque me aparecen dos distintas ??

    Para tomar el valor de esa variable uso la siguiente linea

     if (Properties.Settings.Default.Tema == "Claro")
    {
        c.ModoClaro(this);
    }
    else
    {
        c.ModoOscuro(this);
    }

    El problema es que ese valor no cambia nunca. Como puedo hacer para que cambie ese o poder leer el otro valor?

    sábado, 20 de febrero de 2021 14:33

Todas las respuestas

  • Hola,

    Gracias por levantar tu consulta en los foros de MSDN.

    Eric Ruiz

    ____________________________

    Por favor recuerde "Marcar como respuesta" las respuestas que hayan resuelto su problema, es una forma común de reconocer a aquellos que han ayudado, y hace que sea más fácil para los otros visitantes encontrar la solución más tarde.

    Si tiene algún cumplido o reclamo sobre el soporte de MSDN siéntase en la libertad de contactar MSDNFSF@microsoft.com.

    lunes, 22 de febrero de 2021 15:37
    Moderador