-
C# - ConfigurationBuilder 2 - 중요메서드C# 2022. 7. 5. 12:12728x90
C# - ConfigurationBuilder 2 - 중요메서드
ConfigurationBuilder는 .NET 에서 키-값 형태로 외부에서 설정을 참조할 수 있는 라이브러리입니다. 이번에는 ConfigurationBilder의 중요 메서드를 알아보자. 이후 사용할 소스코드의 생성 과정등을 모른다면 기본설명을 참조하자
참고할 소스코드
using Microsoft.Azure.Functions.Extensions.DependencyInjection; using System; using Microsoft.Extensions.Configuration; using System.IO; [assembly: FunctionsStartup(typeof({프로젝트명으로 교체}.Startup))] namespace {프로젝트명으로 교체} { internal class Startup : FunctionsStartup { //Azure Functions에서는 IFunctionsConfigurationBuilder에서 IConfigurationBuilder를 생성하는 Interface를 사용 public override void ConfigureAppConfiguration(IFunctionsConfigurationBuilder builder) { //환경변수로 경로 가져오기 string envSetting = Environment.GetEnvironmentVariable("EnvSetting"); // builder 변수의 ConfigurationBuilder의 속성을 변경한다. builder.ConfigurationBuilder // SetBasePath는 설정파일들을 검색할 기본 위치를 설정한다. //설정을 안하면 프로젝트가 존재하는 위치에서 설정된다. //웹 서비스를 실행하는 서비스(클라우드 앱 서비스나 Azure Functions 등)에서는 실행되는 위치를 //Directory.GetCurrentDirectory()를 이용해 가져와야 한다. .SetBasePath(Directory.GetCurrentDirectory()) //Json 파일을 이용한 사용시에는 AddJson을 사용한다. //사용시에는 (경로, 반드시 필요여부(false이면 파일이 존재해야한다, reload 이벤트 핸들러 실행시 파일변경사항을 다시 불러올지 여부) 를 포함 //나중에 선언한 것으로 속성이 덮어쓰기가 되니 테스트 혹은 확인용 설정을 먼저 선언 후 //서비스에서 환경변수나 Secret을 설정해서 검색할 수 있는 경로에 파일을 위치시킨다. .AddJsonFile("local.settings.json", optional: false, reloadOnChange: false) .AddJsonFile("TestSettings.json", optional: false, reloadOnChange: false) .AddJsonFile($"local.{envSetting}.json", optional: true, reloadOnChange: false) //현재 설정된 키와 값을 토대로 Build를 실행한다. .Build(); } public override void Configure(IFunctionsHostBuilder builder) { // 실행시 콘솔에 false 출력 Console.WriteLine(builder.GetContext().Configuration["IsEncrypted"]); // 실행시 콘솔에 dotnet 출력 Console.WriteLine(builder.GetContext().Configuration["Values:FUNCTIONS_WORKER_RUNTIME"]); } } }
SetBasePath()
- 설정파일 등을 검색할 기본 위치를 설정한다.
- 설정을 안하면 실행파일이 존재하는 위치에 설정한다.
- 웹 서비스를 실행하는 서비스(클라우드 앱 서비스나 Azure Fucntions 등)에서는 실행되는 위치를 Directory.GetCurrentDirectory()를 설정해 두어야 서비스가 실행되는 위치를 기점으로 파일을 검색한다.
- 모든 설정파일을 한 폴더에 위치할 필요는 없고 용도에 때라 기본 경로만 설정하고 나머지는 '폴더명\파일명' 식으로 찾도록 할 수 있다.
AddJsonFile
- Json 파일을 읽어서 속성값을 등록한다.
- 사용시에는 SetBasePath 에서 설정하거나 설정하지 않았다면 실행파일 위치를 기준으로 경로를 입력한 파일을 찾는다.
- optional 을 false로 설정시 반드시 파일이 존재해야만 한다.
- optional 을 true로 설정시 파일이 존재하지 않으면 속성을 추가하지 않는다.
- 나중에 호출한 메서드로 속성값이 덮어씌어지게 된다. 만약 'local.settings.json' 과 'local.{envSetting}.json' 파일에서 같은 Key 값 'Test'가 존재한다고 하면 나중에 호출한 'local.{envSetting}.json'에서 설정한 값으로 속성값이 정해진다.
- Git이나 앱 서비스 상에 업로드 시에는 Optional 값을 true로 한 파일을 환경변수나 Secret으로 해당 경로에 생성한 파일을 사용한다.
Build
- 현재까지 설정한 값들을 기준으로 Build를 하여 속성을 사용 가능하도록 만든다.
- ConfigurationBuild를 사용시 마지막에 사용하자
728x90반응형'C#' 카테고리의 다른 글
C# - ConfigurationBuilder 4 - 원하는 하위 속성들의 모음을 가져오기 (0) 2022.07.07 C# - ConfigurationBuilder 3 - 중요 속성 원본별 설명 (0) 2022.07.06 C# - ConfigurationBuilder 1 - ConfigurationBuilder란? (0) 2022.07.04 Azure Functions - Azure Functions 설정 Azure App Configuration 연결 (0) 2022.07.01 PowerApps-Samples DataverseSDK 예제설명 3 - TelemetryUsingILogger (0) 2022.06.25