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

本文关键字:app 保存 config 应用程序 设置 更新 编程 方式 | 更新日期: 2023-09-27 18:20:21

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

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

我的猜测是,您正在尝试更改所有用户(ConfigurationUserLevel.None)的配置,但您可能无权这样做。我希望在失败时会出现异常,而您没有说抛出了异常,所以我可能走错了路。

要找到罪魁祸首,您可以尝试ConfigurationUserLevel.PerUserRoamingAndLocalConfigurationUserLevel.PerUserRoaming,看看效果是否更好。

或者,但我怀疑它是否有区别,您可以使用以下行从特定位置获取配置:

Configuration config = ConfigurationManager.OpenExeConfiguration(
                          Assembly.GetEntryAssembly().Location);

直接双击应用程序或在Visual Studio中按Ctrl+F5在某个位置运行该应用程序,对设置的更改将保留到构建调试文件夹下的应用程序配置文件(yourapp.exe.config)中。通过测试,在VS中通过F5(调试)和Ctrl+F5(不调试运行)运行应用程序在应用程序配置文件上的更改方面有所不同。

在我看来,如果您没有"skin"文件,那么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