我目前正在开发一个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")
答案 0 :(得分:2)
我的猜测是您尝试更改所有用户(ConfigurationUserLevel.None
)的配置,并且您可能没有权限这样做。当失败时我会发现一个异常,而你没有说一个被抛出,所以我可能走错了路。
要查找罪魁祸首,您可以尝试ConfigurationUserLevel.PerUserRoamingAndLocal
或ConfigurationUserLevel.PerUserRoaming
,看看是否效果更好。
或者,我怀疑它有所不同,你可以通过使用以下行专门从某个位置获取配置:
Configuration config = ConfigurationManager.OpenExeConfiguration(
Assembly.GetEntryAssembly().Location);
答案 1 :(得分:1)
通过直接双击或在Visual Studio中按Ctrl + F5在某个位置运行应用程序,设置上的更改将持久保存到构建调试文件夹下的应用程序配置文件(yourapp.exe.config)。通过测试,在VS中通过F5(调试)和Ctrl + F5(无需调试运行)运行应用程序就应用程序配置文件的更改而言是不同的。
答案 2 :(得分:0)
在我看来,如果您没有“皮肤”文件,AppplicationSettings是首选方式。它们允许每用户和应用程序范围的设置。 http://msdn.microsoft.com/en-us/library/k4s6c3a0.aspx
更新:我认为您可能会发现此链接对创建设置很有用 http://msdn.microsoft.com/en-us/library/ms171565.aspx
此外,您还可以使用设计器快速从用户特定设置更改为应用程序范围设置。 http://msdn.microsoft.com/en-us/library/aa730869.aspx
SO https://stackoverflow.com/search?q=applicationsettings+c%23
上还有很多链接