[C#] app.config 파일에서 읽기

코드를 사용하여 아래 app.config 파일에서 StartingMonthColumn 및 CategoryHeadingColumn을 읽으려고합니다.

ConfigurationSettings.AppSettings["StartingMonthColumn"]

그러나 null을 반환하고 ConfigurationSettings.AppSettings.Count도 0을 반환합니다.

내 Windows 응용 프로그램에서 이것을 읽도록 도와주세요.

<configuration>
    <configSections>
        <sectionGroup name="userSettings" type="System.Configuration.UserSettingsGroup, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" >
            <section name="CTARepository.Properties.Settings" type="System.Configuration.ClientSettingsSection, System, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" allowExeDefinition="MachineToLocalUser" requirePermission="false" />
        </sectionGroup>
    </configSections>
    <userSettings>
        <CTARepository.Properties.Settings>
            <setting name="Setting" serializeAs="String">
                <value />
            </setting>
        </CTARepository.Properties.Settings>
    </userSettings>
    <appSettings>
        <add key="StartingMonthColumn" value="7"/>
        <add key="CategoryHeadingColumn" value="1"/>
    </appSettings>
</configuration>



답변

구성 설정 .AppSettings가 있다 되지 않는 , 당신은 사용해야 구성 관리자 .AppSettings을 (당신에 대한 참조를 추가해야합니다 대신 System.Configuration를 )

int value = Int32.Parse(ConfigurationManager.AppSettings["StartingMonthColumn"]);

앱 설정을 읽는 데 여전히 문제가 있으면 app.config파일 이름이 올바른지 확인하십시오 . 특히, 실행중인 어셈블리에 따라 이름을 지정 MyApp.exe.config해야합니다. 즉와 동일한 디렉토리에 있어야합니다 MyApp.exe.


답변

나중에 참조 할 System.Configuration수 있도록 참조 라이브러리 에 추가하면 됩니다.

여기에 이미지 설명을 입력하십시오


답변

ConfigurationSettings.AppSettings는 더 이상 사용되지 않습니다 ( 여기 참조).

http://msdn.microsoft.com/en-us/library/system.configuration.configurationsettings.appsettings.aspx

즉, 여전히 작동해야합니다.

제안 사항이지만 응용 프로그램 구성이 실행 파일에서 사용중인 구성인지 확인 했습니까?

디버거를 연결하고 다음 값을 확인하십시오.

AppDomain.CurrentDomain.SetupInformation.ConfigurationFile

그런 다음 구성 파일을 열고 섹션을 확인하십시오.


답변

시험:

string value = ConfigurationManager.AppSettings[key];

자세한 내용 은 App.Config에서 키 읽기를 확인하십시오.


답변

이:

Console.WriteLine( "StartingMonthColumn is {0}", ConfigurationManager.AppSettings["StartingMonthColumn"]);

나를 위해 잘 작동합니다.

참고 ConfigurationManagerSystem.Configuration(당신이 원하는 가능성이 있습니다 있도록 네임 스페이스 using System.Configuration;문을), 그리고 당신이 읽을 것은 문자열 유형이 있기 때문에 당신이 숫자로 사용하기에 무엇을 읽고 분석해야한다는 점.

또한 system.configuration.dll프로젝트 또는 빌드 스크립트에서 참조로 설정해야합니다 .


답변

이유는 간단합니다. 호출 ConfigurationSettings.AppSettings이 필요한 구성 파일을 반환하지 않습니다. 다음 방법 중 하나를 시도하십시오.

  • 응용 프로그램 구성의 이름이 응용 프로그램의 exe 파일과 동일한 이름인지 확인하십시오 (예 : MyApp.exe.config와 같이 확장명이 .config 임)
  • 또는 당신은 사용할 수 있습니다 ConfigurationManager.OpenExeConfiguration(Assembly.GetExecutingAssembly().Location).AppSettings["StartingMonthColumn"]

도움이 되었기를 바랍니다


답변

프로젝트를 다시 빌드하십시오- App.config빌드 라이브러리에서 “<YourProjectName.exe> ​​.config” 의 내용을 복사합니다 .