修改自定义app.config配置部分并保存

时间:2016-11-22 08:51:55

标签: c# config configuration-management

我正在使用.NET Framework 4.6.1开发一个C#WPF MVVM应用程序,我在App.config中有一个自定义部分:

我想从我的应用修改<configuration> <configSections> <section name="SpeedSection" type="System.Configuration.NameValueSectionHandler" /> </configSections> <SpeedSection> <add key="PrinterSpeed" value="150" /> <add key="CameraSpeed" value="150" /> </SpeedSection> </configuration> PrinterSpeed。我试过这段代码:

CameraSpeed

但它不起作用,因为我没有修改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"); } } 部分。

如何修改这些值?

2 个答案:

答案 0 :(得分:3)

System.Configuration.NameValueSectionHandler难以使用。您可以将其替换为System.Configuration.AppSettingsSection,而无需接触任何其他内容:

<configuration>
    <configSections>
        <section name="SpeedSection" type="System.Configuration.AppSettingsSection" />
    </configSections>
    <SpeedSection>
        <add key="PrinterSpeed" value="150" />
        <add key="CameraSpeed" value="150" />
    </SpeedSection>
</configuration>

然后按如下方式更改您的方法:

static void AddUpdateAppSettings(string key, string value)
{
    try
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var settings = ((AppSettingsSection) configFile.GetSection("SpeedSection")).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");
    }
}

答案 1 :(得分:0)

您应该使用ConfigurationSection类。本教程可以提供帮助:https://msdn.microsoft.com/en-us/library/2tw134k3.aspx