Как использовать ConfigurationManager
Я хочу использовать App.config для хранения некоторых параметров.
Я попытался использовать следующий код для получения параметра из файла конфигурации.
private string GetSettingValue(string paramName)
{
return String.Format(ConfigurationManager.AppSettings[paramName]);
}
Я также добавил System.Configuration
для него (я использовал отдельный класс), а в файле App.config у меня есть:
<?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>
Но у меня возникла ошибка при попытке использовать ConfigurationManager
- ConfigurationManager can't exist in such context
, но я уже добавил System.Configuration
. Или я что-то пропустил?
ИЗМЕНИТЬ
класс с конфигурацией (полный вид)
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
Добавьте, как выглядит
![enter image description here]()
Это означает, что проблема не во время использования ConfigurationManger
, а раньше - программа "говорит", что "не знает такого элемента", как я понимаю, ошибка - "Element ConfigurationManager" не существует в таком контексте "
EDIT3
![enter image description here]()
EDIT 4
![enter image description here]()
Ответы
Ответ 1
Хорошо, мне потребовалось некоторое время, чтобы увидеть это, но это никак не компилируется:
return String.(ConfigurationManager.AppSettings[paramName]);
Вы даже не вызываете метод типа String
. Просто сделайте это:
return ConfigurationManager.AppSettings[paramName];
KeyValuePair AppSettings
уже возвращает строку. Если имя не существует, оно вернет null
.
Основываясь на ваших изменениях, вы еще не добавили ссылку в сборку System.Configuration
для проекта, в котором вы работаете.
Ответ 2
Перейдите на tools
>> nuget
>> console
и введите:
Install-Package System.Configuration.ConfigurationManager
Если вы хотите конкретную версию:
Install-Package System.Configuration.ConfigurationManager -Version 4.5.0
Ваша ConfigurationManager
dll теперь будет импортирована, и код начнет работать.
Ответ 3
Я нашел несколько ответов, но я не знаю, правильно ли это. На данный момент это мое решение. Вплоть до этого он не нарушил мой режим дизайна.
`
/// <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];
}`