【发布时间】:2013-05-08 02:08:59
【问题描述】:
我试图在运行时更改我的应用程序设置文件的一个键,但它不起作用。
我就是这样做的:
ConfigurationSettings.AppSettings["XPTO"] = "HELLO";
好像只在内存中改变,文件上没有。
有人知道怎么做吗?
谢谢。
【问题讨论】:
标签: c# .net settings.settings
我试图在运行时更改我的应用程序设置文件的一个键,但它不起作用。
我就是这样做的:
ConfigurationSettings.AppSettings["XPTO"] = "HELLO";
好像只在内存中改变,文件上没有。
有人知道怎么做吗?
谢谢。
【问题讨论】:
标签: c# .net settings.settings
看看我的overview of .NET settings files...简而言之,我认为您需要一个用户范围的设置。它的行为会更符合您的预期。
编辑:如果您使用的是settings designer in Visual Studio,则只需将“范围”更改为“用户”。如果没有,您应该能够以编程方式执行等效操作。
【讨论】:
假设您的应用对文件具有写入权限...
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None); // the config that applies to all users
AppSettingsSection appSettings = config.AppSettings;
if (appSettings.IsReadOnly() == false)
{
appSettings("Key").Value = "new value";
config.Save();
}
我忽略了所有可能引发的异常......
【讨论】:
AppSettings 文件并非设计为可写的。它旨在存储在运行时不会更改但可能随时间更改的配置,即:数据库连接字符串、Web 服务 URL 等。
因此,虽然实际上可能会更新文件,但您应该重新评估该值是否应该存储在那里。
【讨论】: