App.Config键不修改
本文关键字:修改 Config App | 更新日期: 2023-09-27 18:17:13
我在SatackOverFlow上找到了这两种方法。这两种方法对我都不起作用。先看一下我的代码:
private void button1_Click(object sender, EventArgs e)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection settings = config.AppSettings.Settings;
settings.Remove("Valor1");
settings.Add("Valor1", "NewValue");
//save the file
config.Save(ConfigurationSaveMode.Modified);
//reload the section you modified ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
}
:
private void button1_Click(object sender, EventArgs e)
{
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
KeyValueConfigurationCollection settings = config.AppSettings.Settings;
//Update SaveBeforeExit
settings["Valor1"].Value = "NewValue";
//save the file
config.Save(ConfigurationSaveMode.Modified);
//reload the section you modified
ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
}
我想要什么
我想在运行时更改App.Config
的值。
为什么我想要这个?
我正在使用RFID卡,我需要能够在运行时更改一些配置。这些配置可能因客户端而异。
怎么了
好吧,这两个方法,它确实改变了值在那个时候,但当我重新调试应用程序,值是相同的它是改变之前。
为什么?我能做点什么吗?
即使我尝试REMOVE
和ADD
一个键,它仍然是相同的值。所以我不能删除一个键编程吗?
为什么不使用settings而不是app.config store呢?它将有一个初始值,但一旦你保存了一个值,它将保留/重新加载该值,即使在调试会话中也是如此。
在你的应用中你可以做
var s = new Settings();
s.Setting = "set to new value";
s.Save();
您可以通过单击左侧的Settings选项卡从VS2010的项目属性窗口中添加设置。
设置文件用来生成一个cs类,以ApplicationSettingBase为基类。
internal sealed partial class Settings : ApplicationSettingsBase {
private static Settings defaultInstance =
((Settings)(ApplicationSettingsBase.Synchronized(
new Settings())));
public static Settings Default {
get {
return defaultInstance;
}
}
[UserScopedSettingAttribute()]
[DebuggerNonUserCode()]
[DefaultSettingValueAttribute("if no user setting is present")]
public string Setting {
get {
return ((string)(this["Setting"]));
}
set {
this["Setting"] = value;
}
}
}
如果您成功地更改了配置文件,那么您的问题是应用程序没有循环并拉入新的配置。您可以终止正在运行的实例并重新启动吗?