我已经看到了这个解决方案,但似乎对我不起作用:
Configuration oConfig = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
oConfig.AppSettings.Settings["PreferenceToRemember"].Value = “NewValue”;
oConfig.Save(ConfigurationSaveMode.Modified);
ConfigurationManager.RefreshSection("appSettings");
它成功更改了内存中的值,但未将其保存回配置文件。
我正在尝试在Wpf应用中执行此操作,如果这有任何区别。
或者有一种将用户设置保存到文件的首选方法吗?
答案 0 :(得分:1)
如果您的应用安装在\Program Files\
中,则可能无权写入该文件。通常,app.config文件是手工修改的(至少在我的经验中)。如果要保留用户首选项,则应查看.settings文件,因为这些文件是在%appdata%(或%localappdata%)目录中创建的,该目录位于用户目录下。
答案 1 :(得分:0)
我的猜测是使用OpenExeConfiguration
实际上并没有打开相关文件。例如,您可以从XAP运行,.exe.config
内部仍然存在.xap
,但它不会映射到文件系统上的实际文件。
您可以通过查看oConfig.HasFile
是否true
来查看此内容。
如果我的猜测是正确的,那么你需要使用OpenExeConfiguration(string)
重载; the sample on the MSDN page有合理的方法来获取正确的文件名,但我的第一反应是尝试System.Reflection.Assembly.GetExecutingAssembly().GetName().CodeBase
。