我尝试过在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
一个键,它仍然是相同的值。所以我无法以编程方式删除密钥?
答案 0 :(得分:1)
为什么不使用Setting而不是app.config商店?它将具有初始值,但是一旦保存了值,它将保留/重新加载该值,即使在调试会话中也是如此。
在您的应用中,您可以
var s = new Settings();
s.Setting = "set to new value";
s.Save();
通过单击左侧的“设置”选项卡,从项目的属性窗口添加VS2010中的设置。
设置文件用于生成以ApplicationSettingBase为基类的cs类。
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;
}
}
}
答案 1 :(得分:0)
如果您正在成功更改配置文件,那么您的问题是应用程序没有循环并拉入新配置。你可以杀死正在运行的实例并重启吗?