WPF에서 AppSettings Json 파일 사용하기
이철우
지난 .NET Framework는 App.config 파일을 사용하여 연결 문자열 및 로깅 공급자와 같은 앱에 대한 설정을 로드한다. 이제 .NET은 앱 설정에 appsettings.json 파일을 사용한다. appsettings.json에 대한 지원은 Microsoft.Extensions.Configuration NuGet 패키지에서 제공된다. 가능하면 과거의 App.config를 사용하지 않는 것이 좋다.[참고 1]
이 글은 .Net 9 WPF 프로젝트에서 appsettings.json 파일을 사용하는 방법을 보여준다.
닷넷 9 WPF 프로젝트(출력 형태를 'Console Application’으로 한다)를 만들고 NuGet 패키지 Microsoft.Extensions.Configuration 9.0.2과 Microsoft.Extensions.Configuration.Json 9.0.2를 설치한다.
솔루션 탐색기에서 방금 만든 프로젝트를 선택 - 우 클릭 - 추가(Add) - 클래스(Class) 선택하여 JavaScript JSON Configuration File 고르고, 파일 이름에 appsettings.json를 입력하고 추가(Add)를 누른다. 다음과 같이 appsettings.json 파일(속성-출력 디렉토리에 복사를 '항상 복사’로 선택한다 )이 생성되었다.
{
"exclude": [
"**/bin",
"**/bower_components",
"**/jspm_packages",
"**/node_modules",
"**/obj",
"**/platforms"
]
}
그리고 App.xaml.cs 파일에
using Microsoft.Extensions.Configuration;
를 추가하고 다음과 같이 편집하자.
public partial class App : Application
{
public static IConfiguration Config { get; private set; }
public App()
{
Config = new ConfigurationBuilder()
.AddJsonFile("appsettings.json")
.Build();
}
}
MainWindow.xaml.cs를 다음과 같이 편집하자.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var section = App.Config.GetSection("exclude").AsEnumerable();
foreach (var item in section)
{
Console.WriteLine($"{item}");
}
}
}
프로젝트를 실행하면 아래와 같다.
appsettings.json 파일을 조금 바꾸자.
{
"exclude": [
"**/bin",
"**/bower_components",
"**/jspm_packages",
"**/node_modules",
"**/obj",
"**/platforms"
],
"DataDirectory" : "D:\\Data"
}
MainWindow.xaml.cs도 조금 바꾸자.
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
var section = App.Config.GetSection("exclude").AsEnumerable();
foreach (var item in section)
{
Console.WriteLine($"{item}");
}
Console.WriteLine();
var dataDirectory = App.Config.GetSection("DataDirectory");
Console.WriteLine($"Key:{dataDirectory.Key} Path:{dataDirectory.Path} Value:{dataDirectory.Value}");
}
}
프로젝트를 실행하면 아래와 같다.
실제로 appsettings.json에 많은 App 관련 정보를 넣는 것보다는 간단하게 디렉토리 위치만 넣고 그 디렉토리 안에 파일을 참고하여 앱에 필요한 것을 얻는 것이 낫다고 생각한다. 물론 데이터베이스 접속 정보도 appsettings.json이 아니라 다른 파일에 넣어 appsettings.json에 있는 디렉토리에 저장하는 것이 좋을 것이다.