如何以编程方式更新和保存app.config应用程序设置

时间:2012-01-16 13:13:26

标签: c# .net vb.net

我目前正在开发一个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")

3 个答案:

答案 0 :(得分:2)

我的猜测是您尝试更改所有用户(ConfigurationUserLevel.None)的配置,并且您可能没有权限这样做。当失败时我会发现一个异常,而你没有说一个被抛出,所以我可能走错了路。

要查找罪魁祸首,您可以尝试ConfigurationUserLevel.PerUserRoamingAndLocalConfigurationUserLevel.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

上还有很多链接