728x90

.NET 8 WebApplication을 기준으로 환경별 설정사용자별 설정 파일 병합을 적용한 실제 프로젝트 샘플입니다.


✅ 1. 프로젝트 구조 예시

MyApp/
├── Program.cs
├── appsettings.json
├── appsettings.Development.json
├── appsettings.Production.json
├── user.settings.json
├── user.{UserName}.json

✅ 2. Program.cs 전체 코드 (샘플)

using Microsoft.Extensions.Configuration;

var builder = WebApplication.CreateBuilder(args);

// 현재 환경 이름 감지 (Development, Production 등)
var env = builder.Environment;
string userName = Environment.UserName;

// 구성 파일 병합
builder.Configuration
    .AddJsonFile("appsettings.json", optional: false, reloadOnChange: true)
    .AddJsonFile($"appsettings.{env.EnvironmentName}.json", optional: true, reloadOnChange: true)
    .AddJsonFile("user.settings.json", optional: true, reloadOnChange: true)
    .AddJsonFile($"user.{userName}.json", optional: true, reloadOnChange: true);

// 테스트용 출력
string apiUrl = builder.Configuration["ApiUrl"];
string theme = builder.Configuration["Theme"];
string userId = builder.Configuration["UserId"];

Console.WriteLine($"Environment: {env.EnvironmentName}");
Console.WriteLine($"User: {userName}");
Console.WriteLine($"ApiUrl: {apiUrl}");
Console.WriteLine($"Theme: {theme}");
Console.WriteLine($"UserId: {userId}");

var app = builder.Build();
app.MapGet("/", () => $"Hello from {env.EnvironmentName}, User: {userName}");
app.Run();

✅ 3. 예제 설정 파일들

appsettings.json

{
  "ApiUrl": "https://default.api.com",
  "Theme": "Light"
}

appsettings.Development.json

{
  "ApiUrl": "https://dev.api.com"
}

user.settings.json

{
  "UserId": "guest"
}

user.john.json (사용자 이름이 "john"일 경우)

{
  "UserId": "john.doe",
  "Theme": "Dark"
}

🛠️ 기타 설정 팁

  • user.{UserName}.json 같은 파일은 Copy to Output DirectoryCopy always로 설정

  • 실행 시 환경 변수 설정 예:

    set ASPNETCORE_ENVIRONMENT=Development

728x90
반응형

+ Recent posts