-1

我已经尝试了在 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);
}  

我想要什么我想在运行时
更改 my 的值。App.Config

我为什么要这个?
我正在使用 RFID 卡,我需要能够在运行时更改一些配置。这些配置可能因每个客户端而异?

怎么了 ?
好吧,这两种方法,它确实改变了当时的值,但是当我重新调试应用程序时,该值与更改前的值相同。

为什么?有什么我可以做的吗?

即使我尝试REMOVEADD一个键,它仍然是相同的值。所以我无法以编程方式删除密钥?

4

2 回答 2

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;
        }
    }
}
于 2013-06-06T20:23:27.740 回答
0

如果您成功更改了配置文件,那么您的问题是应用程序没有循环并拉入新配置。您可以杀死正在运行的实例并重新启动吗?

于 2013-06-06T19:19:26.190 回答