在运行时存储和创建新的 WPF 应用程序设置

Store and Create new WPF App Settings on Runtime

基于https://docs.microsoft.com/en-us/dotnet/api/system.configuration.configurationmanager?redirectedfrom=MSDN&view=netframework-4.8

我开始使用代码在运行时将设置添加到我的 WPF 应用程序。 我们有以下 Class 到 add/read 自定义设置:

    using System;
using System.Configuration;

namespace my.Classes
{
    class AppSettingHandler
    {
        public static void ReadAllSettings()
        {
            try
            {
                var appSettings = ConfigurationManager.AppSettings;

                if (appSettings.Count == 0)
                {
                    Console.WriteLine("AppSettings is empty.");
                }
                else
                {
                    foreach (var key in appSettings.AllKeys)
                    {
                        Console.WriteLine("Key: {0} Value: {1}", key, appSettings[key]);
                    }
                }
            }
            catch (ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading app settings");
            }
        }

        public static void ReadSetting(string key)
        {
            try
            {
                var appSettings = ConfigurationManager.AppSettings;
                string result = appSettings[key] ?? "Not Found";
                Console.WriteLine(result);
            }
            catch (ConfigurationErrorsException)
            {
                Console.WriteLine("Error reading app settings");
            }
        }

        public static void AddUpdateAppSettings(string key, string value)
        {
            try
            {
                var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
                var settings = configFile.AppSettings.Settings;
                if (settings[key] == null)
                {
                    settings.Add(key, value);
                }
                else
                {
                    settings[key].Value = value;
                }
                configFile.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
            }
            catch (ConfigurationErrorsException)
            {
                Console.WriteLine("Error writing app settings");
            }
        }
    }
}

而且我想向我的 App.config 添加一个带有名称和值的新设置,如下所示:

AppSettingHandler.AddUpdateAppSettings("MyCustom_Setting_" + item.DomaineName.ToString(), "Domaine: " + item.DomaineName);

我没有收到任何错误和数据,但我的应用程序没有写入 App.config。 我是不是错过了重新加载配置之类的东西?

谢谢你

app.config 位于用户通常没有写入权限的应用程序目录中。 ConfigurationManager 可能会阻止写入它的尝试。

ConfigurationManager 使用位于用户 appdata 文件夹中的配置文件处理用户配置。因此,您可能必须使用

打开用户配置
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);

另外 Visual Studio 具有设计器对设置的支持(Add/New Item/Settings 文件)并且设计器生成的文件具有 Save() 方法。