Data Analysis for Investment & Control

[C#] ConfigurationManager를 이용한 프로그램 속성 정보 저장/불러오기 기능 구현 본문

Code/C++:C#:MFC

[C#] ConfigurationManager를 이용한 프로그램 속성 정보 저장/불러오기 기능 구현

아슈람 2016. 1. 13. 00:08
반응형

 

 

프로그램을 개발하다보면 특정 설정값을 저장시켜야 할 때가 있는데 C++에서는 *.ini 파일에 Window API 함수를 이용해서 기록하거나, 따로 txt 파일을 생성하여 기록할 수도 있다. 또한 xml을 핸들링 할 수 있는 라이브러리를 이용해서 저장하기도 하는데, C#에서는 System.Configuration을 추가하여 사용하는 방법이 있다.


파일은 *.config의 확장자를 가지고 xml 포맷으로 저장이 되는데, 간단히 사용법을 정리해 본다.

 

사용하고자 하는 cs 파일에 다음과 같이 참조 추가를 한다.

 

 using System.Configuration;

 

솔루션 탐색기에서도 참조 트리에서 [마우스 우클릭] - [참조 추가] - [.NET] 탭 - [System.Configuration] 선택 후, 확인을 눌러 해당 dll을 추가한다

 

 

 

 

config 파일에 저장 및 불러오기는 다음의 코드를 참조하여 작성한다.

 

public string mPropertyValue = String.Empty;

public void SaveConfiguration()
{
    try
    {
        var configFile = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
        var appSettings = configFile.AppSettings.Settings;
        if(appSettings["PropertyName"] == null)
        {
            appSettings.Add("PropertyName", mPropertyValue);
        }
        else
        {
            appSettings.Remove("PropertyName");
            appSettings.Add("PropertyName"mPropertyValue);
        }
       
        configFile.Save(ConfigurationSaveMode.Modified);
        ConfigurationManager.RefreshSection(configFile.AppSettings.SectionInformation.Name);
    }
    catch (ConfigurationErrorsException)
    {
        Console.WriteLine("configuration error exception occur!");
    }
}

public void LoadConfiguration()
{
    try
    {
        var appSettings = ConfigurationManager.AppSettings;
        stringresult;

        result = appSettings["PropertyName"] ?? String.Empty;
        if(result !=String.Empty)
        {
            mPropertyValue = result;
        }
    }
    catch (ConfigurationErrorsException)
    {
        Console.WriteLine("configuration error exception occur!");
    }
}

 

 

코드를 보면 알겠지만, 속성 값은 key - value의 pair 형태로 구성된다. 즉, 속성 이름과 속성 값의 쌍으로 이루어지는데, value는 string 형태로 변환되어 저장을 시키면 된다.

역시나 읽어올 때도 string 형태로 읽어와서 적당한 변수형으로 Convert를 이용하여 변환시키면 된다.

 

위와 같이 구현을 하게되면 실제 속성 값 저장은 AppName.exe.config 파일에 저장된다. 여기서 AppName은 응용 프로그램 이름이다. Googling을 해보면 App.config 파일에도 따로 생성(?)이 되서 저장되는 것 같이 설명이 되던데, 내가 만들고 있는 WPF 기반 프로젝트에서는 없었다.

어쨌든, 위의 코드로 AppName.exe.config에 저장된 값을 저장/불러오기가 되는 것을 릴리즈 버전에서도 확인했으니 사용상의 문제는 없을 것이다.

 

 

 

 

반응형
Comments