繁体   English   中英

ConfigurationManager-如何从.exe.config中读取值

[英]ConfigurationManager - How to read a value from .exe.config

我正在开发一个允许用户管理Windows程序的应用程序。

所以我有一个.exe.config文件,其中包含以下内容:

<?xml version="1.0" encoding="utf-8" ?><configuration>
<configSections>
    <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
        <section name="Control_Desk.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
    </sectionGroup>
</configSections>
<startup> 
    <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5.2" />
</startup>
<userSettings>
    <Control_Desk.Properties.Settings>          
        <setting name="enabletw" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="enablelivemail" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="enabledesktop" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="enablelogmein" serializeAs="String">
            <value>True</value>
        </setting>
        <setting name="enableps" serializeAs="String">
            <value>False</value>
        </setting>
        <setting name="enablecorel" serializeAs="String">
            <value>False</value>
        </setting>
        <setting name="enablescanner" serializeAs="String">
            <value>False</value>
        </setting>
    </Control_Desk.Properties.Settings>
</userSettings>

而且我想读取和更改valeus,但是,没有成功,没有任何更改被保存,并且我无法读取任何值,当我尝试尝试时,程序抛出System.NullReferenceException,这是我的代码:

        Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        if (config.AppSettings.Settings["enablelivemail"].Value == "True")
            {
                config.AppSettings.Settings["enablelivemail"].Value = "False";
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
                //ConfigurationManager.RefreshSection("appSettings");
            }
            else
            {
                config.AppSettings.Settings["enablelivemail"].Value = "True";
                config.Save(ConfigurationSaveMode.Modified);
                ConfigurationManager.RefreshSection(config.AppSettings.SectionInformation.Name);
            }

所以,在第二行,我得到了例外,没有任何效果,有帮助吗?

提前致谢!

第二行上的config.AppSettings从配置文件中的<appSettings>节点读取。 而且配置文件上没有<appSettings>节点。

检查此链接以解决您的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM