我目前正在开发一个 WPF/.Net 项目, 在这个项目中,用户可以选择完全更改应用程序的皮肤, 我正在尝试使用配置管理提交后编写这些设置, 但我似乎无法将新值添加到 app.config 文件中,这是我的方法
Public Sub SetApplicationSetting(pstrAppSettingName As String, pstrAppSettingValue As String)
Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue)
lobjconfig.Save(ConfigurationSaveMode.Full)
ConfigurationManager.RefreshSection("appSettings")
End Sub
有什么想法吗?
现在街上的说法是我无法添加到已有的内容中,所以我想也许我应该在更新之前先将其删除, 但仍然没有任何结果,这是新代码
Dim lobjconfig As System.Configuration.Configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None)
lobjconfig.AppSettings.Settings.Remove(pstrAppSettingName)
lobjconfig.AppSettings.Settings.Add(pstrAppSettingName, pstrAppSettingValue)
lobjconfig.AppSettings.Settings.CurrentConfiguration.Save()
lobjconfig.Save(ConfigurationSaveMode.Full, True)
ConfigurationManager.RefreshSection("appSettings")
最佳答案
我的猜测是,您正在尝试更改所有用户的配置 (ConfigurationUserLevel.None
),并且您可能无权这样做。当失败时,我预计会出现异常,而您没有说抛出异常,所以我可能走错了路。
要找到罪魁祸首,您可以尝试 ConfigurationUserLevel.PerUserRoamingAndLocal
或 ConfigurationUserLevel.PerUserRoaming
并查看是否效果更好。
或者,但我怀疑这会有所不同,您可以使用以下行专门从某个位置获取配置:
Configuration config = ConfigurationManager.OpenExeConfiguration(
Assembly.GetEntryAssembly().Location);
关于c# - 如何以编程方式更新和保存 app.config 应用程序设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8880514/