2016-10-13 3 views
0

나는 사용자가 Windows 프로그램을 관리 할 수 ​​있도록하는 응용 프로그램에서 작업하고 있습니다.ConfigurationManager - .exe.config에서 값을 읽는 방법

그래서 나는 .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를 읽고 변경하고자하지만, 어떤 성공이 변경이 저장되지 않고 내가 캔트

 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); 
      } 

그래서, 두 번째 줄에 난 예외를 가지고 아무것도, 어떤 도움을 작동하지 않습니다 : 모든 값을 읽어, 내가하려고 할 때, 프로그램이 여기하는 System.NullReferenceException을 던져 내 코드?

미리 감사드립니다.

+0

http://stackoverflow.com/a/11149569/3583859이 부분을 참조하십시오. 도움이 될 것입니다. –

+0

@VijayKumbhoje, OP 사용 사례에 대한 솔루션을 사용해 보셨습니까? –

답변

1

config.AppSettings 두 번째 줄의 내용은 config 파일의 <appSettings> 노드에서 읽습니다. 그리고 설정 파일에 <appSettings> 노드가 없습니다.

this link을 확인하여 문제를 해결하십시오.

+0

솔루션을 설명하기 시작해야합니다. 여기서 별도의 섹션 그룹 'UserSettings'가 표준 그룹이 아니고'Control_Desk.Properties.Settings'가 표준 섹션이 아니기 때문에 Section이 생성됩니다 –