Pregunta Cómo usar ConfigurationManager


Quiero usar App.config para almacenar algunas configuraciones. Traté de usar el siguiente código para obtener un parámetro de un archivo de configuración.

private string GetSettingValue(string paramName)
{
    return String.Format(ConfigurationManager.AppSettings[paramName]);
}

También agregué System.Configuration para ello (utilicé una clase separada), y en el archivo App.config tengo:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
  <startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
  </startup>
  <appSettings>
    <add key ="key1" value ="Sample" />
  </appSettings>
</configuration>

Pero recibí un error al intentar usar ConfigurationManager - ConfigurationManager can't exist in such context, pero ya agregué System.Configuration. ¿O me perdí algo?

EDITAR:

clase con config (vista completa)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Configuration;

namespace browser
{
    class ConfigFile
    {
        private string GetSettingValue(string paramName)
        {
            return String.Format(ConfigurationManager.AppSettings[paramName]);
        }
    }
}

EDIT2

Añadir cómo se ve

enter image description here

Esto significa que el problema no es durante el uso ConfigurationManger pero antes - el programa "dice" que "no conoce ese elemento" como yo entiendo el error - el "Administrador de Configuración del Elemento" no existe en ese contexto "

EDIT3

enter image description here

EDIT 4

enter image description here


32
2017-10-07 19:12


origen


Respuestas:


De acuerdo, me tomó un tiempo ver esto, pero no hay forma de que esto compila:

return String.(ConfigurationManager.AppSettings[paramName]);

Ni siquiera está llamando a un método en el String tipo. Solo haz esto:

return ConfigurationManager.AppSettings[paramName];

los AppSettings KVP ya devuelve una cadena. Si el nombre no existe, regresará null.


En función de su edición, todavía no lo ha hecho agregó una Referencia al System.Configuration ensamblaje para el proyecto en el que está trabajando


27
2017-10-07 19:20



Encontré algunas respuestas, pero no sé si es la correcta. Esta es mi solución por ahora. Afortunadamente no rompió mi modo de diseño.

    `
    /// <summary>
    /// set config, if key is not in file, create
    /// </summary>
    /// <param name="key">Nome do parâmetro</param>
    /// <param name="value">Valor do parâmetro</param>
    public static void SetConfig(string key, string value)
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var settings = configFile.AppSettings.Settings;
        if (settings[key] == null)
        {
            settings.Add(key, value);
        }
        else
        {
            settings[key].Value = value;
        }
        configFile.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
    }

    /// <summary>
    /// Get key value, if not found, return null
    /// </summary>
    /// <param name="key"></param>
    /// <returns>null if key is not found, else string with value</returns>
    public static string GetConfig(string key)
    {
        return ConfigurationManager.AppSettings[key];
    }`

-2
2017-08-18 14:35