Динамически изменять значение в файле app.config
Я хочу изменить значение в разделе appSetting в app.config. Поэтому я написал,
Console.WriteLine(ConfigurationManager.AppSettings["name"]);
Console.Read();
Configuration config=ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["name"].Value = "raja";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Console.WriteLine(ConfigurationManager.AppSettings["name"]);
Console.Read();
после выполнения вышеуказанного кода, я проверил app.config, было ли изменено значение элемента "name". но никаких изменений.
Что случилось с моим кодом? или есть ли другой способ сделать это?
Ответы
Ответ 1
Этот код работает для меня:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings["test"].Value = "blah";
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Примечание: он не обновляет элемент решения "app.config", а ".exe.config" - один в папке bin/, если вы запускаете его с помощью F5.
Ответ 2
Вам нужно обновить файл app.config вручную
// Load the app.config file
XmlDocument xml = new XmlDocument();
xml.Load(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
// Do whatever you need, like modifying the appSettings section
// Save the new setting
xml.Save(AppDomain.CurrentDomain.SetupInformation.ConfigurationFile);
И затем сообщите своему приложению о перезагрузке любого раздела, который вы изменили
ConfigurationManager.RefreshSection("appSettings");
Ответ 3
Расширение на примере Adis H, чтобы включить нулевой регистр (бит получил на этом)
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
if (config.AppSettings.Settings["HostName"] != null)
config.AppSettings.Settings["HostName"].Value = hostName;
else
config.AppSettings.Settings.Add("HostName", hostName);
config.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
Ответ 4
Это работает, просто посмотрите папку bin/Debug, вы, вероятно, смотрите файл app.config внутри проекта.
Ответ 5
Try:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
config.AppSettings.Settings.Remove("configFilePath");
config.AppSettings.Settings.Add("configFilePath", configFilePath);
config.Save(ConfigurationSaveMode.Modified,true);
config.SaveAs(@"C:\Users\USERNAME\Documents\Visual Studio 2010\Projects\ADI2v1.4\ADI2CE2\App.config",ConfigurationSaveMode.Modified, true);
Ответ 6
XmlReaderSettings _configsettings = new XmlReaderSettings();
_configsettings.IgnoreComments = true;
XmlReader _configreader = XmlReader.Create(ConfigFilePath, _configsettings);
XmlDocument doc_config = new XmlDocument();
doc_config.Load(_configreader);
_configreader.Close();
foreach (XmlNode RootName in doc_config.DocumentElement.ChildNodes)
{
if (RootName.LocalName == "appSettings")
{
if (RootName.HasChildNodes)
{
foreach (XmlNode _child in RootName.ChildNodes)
{
if (_child.Attributes["key"].Value == "HostName")
{
if (_child.Attributes["value"].Value == "false")
_child.Attributes["value"].Value = "true";
}
}
}
}
}
doc_config.Save(ConfigFilePath);
Ответ 7
вы можете внести изменения в файл setting.designer в вашем приложении
просто поменяй
Открытое свойство только для чтения ConnectionString() As String
сделать его Открытым свойством ConnectionString() As String
и вы должны добавить Установлен Me ("ConnectionString") = значение Конец набора