none
¿Saben que está pasando con el archivo de configuración? RRS feed

  • Pregunta

  • Verán:

    Desde las propiedades del proyecto definí algunos parametros de la aplicacion.

    Noto que se han creado unos archivos app.config (EN LA CARPETA DEL PROGRAMA) y otro NOMBREexe.config (DENTRO DE \DEBUG)

    La cosa es que cambio mediante código el valor de uno de los parametros y luego lo guardo y funciona bien aparentemente porque vuelvo a visualizar el parámetro y aparece con el valor cambiado.

    El problema es que estos cambios no se reflejan en  ninguno de los archivos *.config y cuando veo en propiedades del programa/configuración están los parámetros con sus valores originales (sin cambio).

    Lo raro es que si ejecuto el programa y visualizo cualquiera de los parametros sí se visualiza el cambio que realicé.

    Lo que no entiendo es ¿dónde diablos se están guardando los nuevos cambios? en algún sitio tienen que estar porque cuando los leo aparece el valor pero en los archivos *.config donde se supone deben aparecer, aparecen los valores originales, sin cambio.

    (tengo Visual Studio 2015)

    • Editado James-2016 sábado, 23 de enero de 2016 6:28
    sábado, 23 de enero de 2016 6:26

Respuestas

  • Cada vez que ejecutas el programa desde dentro de Visual Studio, el app.config se copia encima del nombredelprograma.exe.config. Por lo tanto, si durante la ejecución se cambió algo de dicho fichero, la siguiente vez que lo ejecutas se pierde dicho cambio.

    Otra cosa es que estés usando los My.Settings. Estos no se guardan en el .config (que solo tiene el valor predeterminado de los parámetros, pero no salva los cambios). Los cambios se guardan en un archivo xml en un subdirectorio por debajo de la carpeta AppData (normalmente oculta) bajo la carpeta privada del usuario.

    sábado, 23 de enero de 2016 9:11

Todas las respuestas

  • Cada vez que ejecutas el programa desde dentro de Visual Studio, el app.config se copia encima del nombredelprograma.exe.config. Por lo tanto, si durante la ejecución se cambió algo de dicho fichero, la siguiente vez que lo ejecutas se pierde dicho cambio.

    Otra cosa es que estés usando los My.Settings. Estos no se guardan en el .config (que solo tiene el valor predeterminado de los parámetros, pero no salva los cambios). Los cambios se guardan en un archivo xml en un subdirectorio por debajo de la carpeta AppData (normalmente oculta) bajo la carpeta privada del usuario.

    sábado, 23 de enero de 2016 9:11
  • Gracias por responder, efectivamente con lo que dices y con lo que he podido probar ya voy entendiendo cómo funciona:

    Efectivamente la configuración se guarda inicialmente como app.config y nombredelprogramaexe.config (es que está en una subcarpeta) y luego se crea una copia de estos con el nombre user.config (en un lugar recóndito en la carpeta del usuario) y como dices los cambios que voy realizando se guardan en user.config y si borro este archivo la información se recupera automáticamente de app.config y si cambio algún valor se vuelve a crear user.config.

    Ahora tengo otra consulta, desde el programa en la cuadrícula donde se definen las configuraciones hay una pestaña sincronizar que lo que debería hacer es borrar el user.config para obtener los valores por defecto pero cuando le doy clic me sale el mensaje "no se encontraron archivos user.config en ninguna de las siguientes ubicaciones:" pero no me muestra ninguna ubicación.

    Primera pregunta:

    La pregunta es cómo le ¿indico a Visual Basic dónde buscar el archivo user.config?

    Segunda pregunta:

    Al borrar user.config se recuperan las configuraciones por defecto (o sea las que definí inicialmente desde VB) pero se recuperan todas de golpe, debe haber alguna propiedad para recuperar  un solo valor por defecto (valor de cadena o valor integer) ¿cómo sería esa línea de código?

    sábado, 23 de enero de 2016 17:24