[C# .NET] JSON으로 프로젝트 Configuration.

박제현·2024년 6월 6일
0

.NET

목록 보기
2/7

Config가 필요한 이유?

이전 포스트에서는 Dapper 혹은 Entity 클래스 내에서 각각 SQL Server 문자열을 생성해줘야 했다.

이러면 SQL Server가 변경되는 경우, 수정 노가다가 반드시 발생한다.

이러한 문제를 해결하기 위해서, json 파일로 기본 구성요소를 제작하여, 전역으로 사용할 수 있도록 한다.

Config 파일 생성하기.

우선, appSettings.json 을 루트 디렉토리에 생성한다.

그리고 ConnectionStrings 키로 맵핑하여, DefaultConnection 을 작성한다.

ConnectionStrings 는 이후 있을 IConfiguration의 기본 구성 요소이다.

Packages 추가.


Configuration 을 구성하기 위한 패키지들을 추가해준다.

Config 구현

IConfiguration config = new ConfigurationBuilder().AddJsonFile("appSettings.json").Build();

IConfiguration 클래스로 config 객체를 생성한다.
이 때, ConfigurationBuilder 를 이용해 우리가 생성한 json 파일을 등록하고 빌드하여 객체를 생성한다.

public DataContextDapper(IConfiguration config)
    {
        _config = config;
        _connectionString = config.GetConnectionString("DefaultConnection");
    }

config 객체롤 부터 ConnectionString 에 있는 Value (object) 내부에 DefaultConnection 으로 맵핑된 값을 찾는다.

위와 같은 방식으로 구현하여 코드의 재사용성이 높아지고, 유지보수가 간편해진다.

어디서든 appSettings.json에 있는 config 설정 값을 따라가기 때문에, 해당 파일에서만 수정해주면 되는 것이다.

appSetting.json 등록

Unhandled exception. System.IO.FileNotFoundException: The configuration file 'appSettings.json' was not found and is not optional. The expected physical path was '/Users/sarumani/dev/study/HelloWorld/bin/Debug/net8.0/appSettings.json'.

하지만, 바로 실행하면 위와 같은 에러가 발생할텐데, 이는 실제 프로젝트가 실행되는 경로에 appSettings.json이 존재하지 않기 때문이다.

그래서 csproj 파일에 appSettings.json을 등록해 주어야 한다.

    <None Update="appSettings.json">
      <CopyToOutputDirectory>Always</CopyToOutputDirectory>
    </None>

위와 같은 내용을 <ItemGroup> 에 추가해준다.

코드 해석

이 XML 스니펫은 .NET 프로젝트 파일(예: .csproj)에서 특정 파일의 빌드 동작을 정의하는 항목입니다. 각 요소의 의미는 다음과 같습니다:

<None Update="appSettings.json">: 이 라인은 appSettings.json 파일을 가리키고 있으며, 파일의 속성을 업데이트하고 있음을 나타냅니다. None 요소는 빌드 시 특정 동작을 수행하지 않는 파일을 정의하는 데 사용됩니다.

<CopyToOutputDirectory>Always</CopyToOutputDirectory>: 이 속성은 파일을 출력 디렉터리로 복사하는 방법을 지정합니다. Always 값은 파일이 빌드될 때마다 출력 디렉터리(예: bin/Debug 또는 bin/Release)로 항상 복사되도록 합니다.

종합하면, 이 코드는 appSettings.json 파일이 빌드될 때마다 항상 출력 디렉터리에 복사되도록 설정하고 있습니다. 이를 통해 빌드된 애플리케이션이 실행될 때 해당 설정 파일을 사용할 수 있도록 보장합니다.
profile
닷넷 새싹

0개의 댓글

관련 채용 정보