none
Como usar ConfigurationManager.AppSettings para leer valores del archivo de configuracion RRS feed

  • Pregunta

  • Quiero leerlos desde código, he encontrado por alli ejemplos para leer cadenas de conexion, pero quiero leer otras claves y obtener sus valores.
    sábado, 23 de enero de 2016 3:38

Respuestas

  • Depende de los valores que quieras obtener.

    La propiedad AppSettings del ConfigurationManager lee las claves que hayas podido añadir a la sección appSettings del archivo de configuración.

    Puedes ver un ejemplo de cómo utilizarla en la propia documentación de la propiedad:

    ConfigurationManager.AppSettings (Propiedad)

    Si eres más específico sobre lo que tratas de hacer igual te podíamos decir algo más.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Propuesto como respuesta Sergio Parra sábado, 23 de enero de 2016 14:26
    • Marcado como respuesta James-2016 domingo, 24 de enero de 2016 19:41
    sábado, 23 de enero de 2016 12:20
  • Puedes acceder al valor por defecto con:

    My.Settings.Properties("IdentificadorDelIDE").DefaultValue


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta James-2016 sábado, 8 de octubre de 2016 23:41
    lunes, 25 de enero de 2016 1:00

Todas las respuestas

  • Tengo una configuracion enlazada a un control de texto, mi pregunta es:

    Cuando modifico la propiedad enlazada (text, en este caso) en tiempo de ejecución, ¿esta queda guardada automáticamente en el archivo de configuración por el hecho que está enlazada? ¿o tengo que guardarla necesariamente mediante código?

    De ser así, entonces la propiedad enlazada solo sirve para leer el dato almacenado pero no para actualizarlo?

    viernes, 22 de enero de 2016 23:59
  • Depende de los valores que quieras obtener.

    La propiedad AppSettings del ConfigurationManager lee las claves que hayas podido añadir a la sección appSettings del archivo de configuración.

    Puedes ver un ejemplo de cómo utilizarla en la propia documentación de la propiedad:

    ConfigurationManager.AppSettings (Propiedad)

    Si eres más específico sobre lo que tratas de hacer igual te podíamos decir algo más.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Propuesto como respuesta Sergio Parra sábado, 23 de enero de 2016 14:26
    • Marcado como respuesta James-2016 domingo, 24 de enero de 2016 19:41
    sábado, 23 de enero de 2016 12:20
  • Gracias por responder, lo que quiero es leer un valor simple, por ejemplo un valor de cadena o tipo entero. Por ejemplo, si defino cNombre y le pongo "Juan Perez" ¿cuál sería la línea de código usando configurationmanager.appsettings para obtener el valor de cNombre?

    Otra cosita:

    Por lo que voy investigando entiendo que los valores en realidad se reuperan de user.config (cuando este existe) que son los valores que voy modificando, los valores iniciales por defecto se guardan en app.config o en nombreDePrograma.exe.config, si borro user.config puedo recuperar los valores por defecto de golpe ¿pero y si quiero recuperar un solo valor por defecto sin borrar user.config cuál sería la línea de código usando configurationmanager.appsettings?

    sábado, 23 de enero de 2016 17:31
  • Explico:

    Cuando leo un valor de configuracion lo obtiene de user.config pero yo quiero leer un valor original guardado en app.config para restaurar por ejemplo un valor por defecto.

    Si borro user.config obtengo todos los valores por defecto de golpe recuperados de app.config.

    Pero yo no quiero restaurar todos los valores por defecto, solo uno en particular de manera que los otros valores se conserven (uno simple, de texto por ejemplo).

    Sé que debe ser una línea de código, pero cuál?


    sábado, 23 de enero de 2016 19:23
  • Explico:

    Cuando leo un valor de configuracion lo obtiene de user.config pero yo quiero leer un valor original guardado en app.config para restaurar por ejemplo un valor por defecto.

    Si borro user.config obtengo todos los valores por defecto de golpe recuperados de app.config.

    Pero yo no quiero restaurar todos los valores por defecto, solo uno en particular de manera que los otros valores se conserven (uno simple, de texto por ejemplo).

    Sé que debe ser una línea de código, pero cuál?


    Pero ese no es un comportamiento por defecto del ConfigurationManager.

    En la sección appSettings del app.config puedes indicarle que importe los valores de un user.config de forma que los valores definidos en este segundo archivo prevalezcan sobre los valores por defecto.

    Sin embargo, para la aplicación es transparente. Es decir, no hay forma de diferenciar si el valor recuperado proviene de uno u otro archivo (a no ser que abras el app.config como un fichero de texto y parsees su contenido en el código).

    El ConfigurationManager sí tiene métodos que permiten trabajar sobre un archivo de configuración diferente al definido por defecto para a aplicación, por lo que sí podrías utilizarlo para leer y guardar información en un fichero user.config.

    La verdad es que no tengo nada claro qué es lo que tienes hecho hasta el momento y qué es lo que quieres conseguir.

    Espero que te haya ayudado.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 24 de enero de 2016 8:22
  • Trato de implementar en Visual Net u programa que tenía en VB6, pero como vb net supera varias limitaciones de VB6 procuro usar todas las bondades que este ofrece.

    En relación a los archivos de configuración, hasta el momento tengo lo siguiente:

    - Identificadores definidos en la pestaña Configuración de las propiedades del proyecto que se añaden automáticamente a app.config.

    - He enlazado un control de texto a una de estos identificadores.

    Al ejecutar el programa, en el control de texto recupera automáticamente el contenido de app.config (el identificador que tengo enlazado), si cambiaba el contenido (aún estando enlazado al control) noté que no se cambiaba automáticamente, pero con una línea de código puedo grabar el cambio y cuando abro el formulario ahora sí automáticamente aparece la configuración que guardé.

    De lo anterior "he descubierto" que en app.config siempre queda el valor por defecto, los que se cargan cuando no existe user.config, al modificar el valor de un identificador automáticamente se crea user.config y de allí en adelante automáticamente los valores se cargan de user.config y ya no de app.config.

    Hasta allí todo, ok. Ya puedo leer y guardar datos de configuración.

    Lo que aún no he logrado es leer un dato por defecto (o sea el dato que originalmente ingresé desde el IDE de Visual Net y que queda guardado en app.config), me explico: al cambiar en el formulario el dato inicial este se guarda en user. config y al volver a abrir el formulario el dato se recupera desde este archivo, lo cual está bien porque así siempre se carga la última configuración del usuario, pero qué pasa si quiero recuperar el valor por defecto, sé que este valor se encuentra en app.config (este queda intacto con los valores por defecto), lo que quiero es el código que me permita obtener un valor específico de app.config (o sea el valor por defecto) ya que cuando aplico my.config lo hace sobre user.config (cuando este existe), en todo caso cómo indicar desde código que busque la clave en uno u otro archivo?

    Gracias por la paciencia de leer, ojalá se entienda lo que busco.




    • Editado James-2016 domingo, 24 de enero de 2016 20:10
    domingo, 24 de enero de 2016 20:01
  • Hola James,

    sí se entiende perfectamente.

    ¿Puedes poner el código de cómo guardas y recuperas el valor para hacer alguna prueba?

    Sí hay forma de abrir un archivo de configuración específico pero quiero hacer alguna prueba para ver si se puede hacer de una forma más sencilla.


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    domingo, 24 de enero de 2016 21:04
  • Aquí está:

    Con esta línea, haciendo referencia al mismo nombre de identificador que le puse en el IDE obtengo el valor de un identificador simple (por ejemplo de cadena) en una variable tipo string:

    cVariableString = My.Settings.IdentificadorDelIDE.ToString

    (el valor lo lee de user.config y si este no existe, lo lee de app.config)

    --------------------

    Y con estas dos líneas puedo almacenar en el identificador un valor:

    My.Settings.IdentificadorDelIDE = cVariableString  

    My.Settings.Save()    

    (lo guarda automáticamente en user.config y si no existe (o lo borro), lo vuelve a crear)

    --------------------------

    Lo que me falta es la línea que recupere el valor de: app.config o de NombreEjecutable.exe.config 

    o el código que le indique a VB que obtenga el dato de app.config y no de user.config







    • Editado James-2016 lunes, 25 de enero de 2016 0:46
    lunes, 25 de enero de 2016 0:35
  • Puedes acceder al valor por defecto con:

    My.Settings.Properties("IdentificadorDelIDE").DefaultValue


    Píldoras .NET
    Artículos, tutoriales y ejemplos de código .NET

    Píldoras JS
    Artículos, tutoriales y ejemplos de código JavaScript, HTML5, CSS3, ...

    • Marcado como respuesta James-2016 sábado, 8 de octubre de 2016 23:41
    lunes, 25 de enero de 2016 1:00
  • Gracias, esa era, las mejores soluciones suelen ser las más simples.
    lunes, 25 de enero de 2016 7:16