如何在控制台应用程序中将值永久写入app.config文件?

3
在一个控制台应用程序项目中,我尝试将值写入app.config文件并永久保存,但只能保存在内存中。我尝试了写入app.config文件的值中的所有解决方案,但都不适用于我。
你有什么想法可以使更改永久生效吗?
app.config文件:
<appSettings>
    <add key="test" value="123456" />
</appSettings>

只有两个方法用于将值保存到内存的类:

public static class ConfigurationHelper
{

    public static void SetSetting(string key, string value)
    {
        Configuration configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection("appSettings");
    }


    public static void SetSetting2(string key, string value)
    {
        Configuration configuration = ConfigurationManager.
            OpenExeConfiguration(Assembly.GetExecutingAssembly().Location);
        configuration.AppSettings.Settings[key].Value = value;
        configuration.Save();
        ConfigurationManager.RefreshSection("appSettings");
    }

}

简单的测试,可以输出更改内容,但是当重新构建项目或在记事本中打开app.config时,更改内容不会被保存:

[Test]
public void FirstTest()
{
    Console.WriteLine("Value before: " + ConfigurationHelper.Get<string>("test"));
    ConfigurationHelper.SetSetting2("test", "NewValue");
    Console.WriteLine("Value after: " + ConfigurationHelper.Get<string>("test"));
}

当您重新构建应用程序时,它会将app.config从项目复制到输出目录中,并覆盖它。要么不要这样做,要么将您编写的更改复制回项目文件中。 - Peter Ritchie
谢谢,我想我理解问题了。有什么想法可以将更改从输出文件复制回app.config文件吗? - Mr Null
1个回答

6
据我所知,从 app.config 中获取的信息用于创建程序,但是 app.config 中的键和值是只读的。但是您不必使用 app.config 来存储应用程序中的值,可以尝试使用以下方法: 步骤 1
进入 solution explorer -> Properties -> Settings 并创建设置文件。
步骤 2
添加要使用的设置
步骤 3
在代码中使用
添加 using yourNameSpace.Properties; 读取设置的值:
var name = Settings.Default.Name1; 设置设置的值:
Settings.Default.Name1 = value; 保存设置:
Settings.Default.Save(); 希望它对您有所帮助。

谢谢Maciej,我会尝试一下或者考虑使用数据库代替 :) - Mr Null
这里只能保存用户特定的设置,而不能保存整个机器的设置。 - ProfK

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接