ASP.NET Core의 새로운 구성 모델
ASP.NET Core는 기존 ASP.NET을 완전히 재설계한 프레임워크입니다. 이전 버전에서는 System.Configuration과 web.config 파일의 XML 구성에 의존해 설정을 관리했지만, ASP.NET Core에서는 솔루션 전역 설정, 프로젝트별 설정, 클라이언트별 설정 등을 훨씬 쉽게 선언하고 접근할 수 있는 새로운 구성(Configuration) 모델을 도입했습니다. 이 새로운 구성 모델은 XML, INI, JSON 파일을 모두 지원합니다.
ASP.NET Core의 주요 JSON 구성 파일
ASP.NET Core 프로젝트에서 주로 사용되는 JSON 구성 파일은 크게 6가지입니다.
global.json launchsettings.json appsettings.json bundleconfig.json project.json bower.json
1. global.json — 솔루션 수준 설정
global.json 파일은 솔루션 수준의 설정을 정의하는 데 사용됩니다.
예제
{
"projects": [ "src", "test" ],
"sdk": {
"version": "1.0.0-preview2-003121"
}
}projects 속성은 솔루션 소스 코드의 위치를 정의합니다. 위 예제에서는 두 개의 경로를 지정하고 있는데, src 폴더에는 실제 애플리케이션 코드가, test 폴더에는 테스트 코드가 위치합니다. 또한 sdk 섹션에서는 빌드에 사용할 .NET SDK 버전을 명시할 수 있습니다.
2. launchsettings.json — 실행 프로필 설정
launchsettings.json 파일에서는 Visual Studio가 애플리케이션을 시작할 때 사용하는 각 프로필별 설정을 정의할 수 있습니다. 여기에는 애플리케이션 실행 시 적용되는 환경 변수뿐만 아니라, 특정 프로필에 대한 컴파일 및 디버깅용 프레임워크 설정도 포함됩니다.
{
"iisSettings": {
"windowsAuthentication": false,
"anonymousAuthentication": true,
"iisExpress": {
"applicationUrl": "https://localhost:50944/",
"sslPort": 0
}
},
"profiles": {
"IIS Express": {
"commandName": "IISExpress",
"launchBrowser": true,
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"ASPCoreMVCHelloWorld": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "https://localhost:5000",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development"
},
"kestrel": {
"commandName": "kestrel",
"sdkVersion": "dnx-clr-win-x86.1.0.0-preview2-003121"
}
}
}
}각 프로필의 설정은 솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭한 후 속성(Properties) 메뉴를 통해 변경할 수 있습니다.
3. appsettings.json — 애플리케이션 설정
기존 ASP.NET은 애플리케이션 구성 설정을 Web.config에 저장했습니다. 반면 ASP.NET Core는 appsettings.json을 사용하여 사용자 지정 애플리케이션 설정, 데이터베이스 연결 문자열, 로깅 설정 등을 관리합니다. 아래는 appsettings.json의 샘플입니다.
{
"ApplicationInsights": {
"InstrumentationKey": ""
},
"Logging": {
"IncludeScopes": false,
"LogLevel": {
"Default": "Debug",
"System": "Information",
"Microsoft": "Information"
}
}
}4. bundleconfig.json — 번들링 및 축소 설정
bundleconfig.json 파일에서는 프로젝트의 CSS·JavaScript 번들링(Bundling)과 축소(Minification)에 대한 구성을 정의할 수 있습니다.
[
{
"outputFileName": "wwwroot/css/site.min.css",
// 상대 경로 기반의 입력 파일 배열. Glob 패턴 지원
"inputFiles": [
"wwwroot/css/site.css"
]
},
{
"outputFileName": "wwwroot/js/site.min.js",
"inputFiles": [
"wwwroot/js/site.js"
],
// 선택적으로 축소 옵션 지정 가능
"minify": {
"enabled": true,
"renameLocals": true
},
// 선택적으로 .map(소스맵) 파일 생성
"sourceMap": false
}
]5. project.json — 프로젝트 수준 설정
ASP.NET Core 초기 버전에서는 project.json 파일을 사용하여 모든 프로젝트 수준의 구성 설정을 저장했습니다. 이 파일은 프로젝트 정보를 JSON 형식으로 담고 있으며, 대표적으로 NuGet 패키지 종속성을 관리하는 데 활용되었습니다.
{
"dependencies": {
"Microsoft.NETCore.App": {
"version": "1.0.0",
"type": "platform"
},
"Microsoft.ApplicationInsights.AspNetCore": "1.0.0",
"Microsoft.AspNetCore.Diagnostics": "1.0.0",
"Microsoft.AspNetCore.Mvc": "1.0.0",
"Microsoft.AspNetCore.Razor.Tools": {
"version": "1.0.0-preview2-final",
"type": "build"
},
"Microsoft.AspNetCore.Server.IISIntegration": "1.0.0",
"Microsoft.AspNetCore.Server.Kestrel": "1.0.0",
"Microsoft.AspNetCore.StaticFiles": "1.0.0",
"Microsoft.Extensions.Configuration.EnvironmentVariables": "1.0.0",
"Microsoft.Extensions.Configuration.Json": "1.0.0",
"Microsoft.Extensions.Logging": "1.0.0",
"Microsoft.Extensions.Logging.Console": "1.0.0",
"Microsoft.Extensions.Logging.Debug": "1.0.0",
"Microsoft.Extensions.Options.ConfigurationExtensions": "1.0.0",
"Microsoft.VisualStudio.Web.BrowserLink.Loader": "14.0.0"
}
}참고: project.json은 .NET Core 1.x 시절 사용되던 형식으로, 이후 MSBuild 기반의 .csproj 파일로 대체되어 현재는 더 이상 사용되지 않습니다.
6. bower.json — 프런트엔드 패키지 관리
Bower는 웹 환경을 위한 패키지 관리자입니다. Bower는 HTML, CSS, JavaScript, 폰트, 이미지 파일 등을 포함하는 컴포넌트를 관리하며, 프로젝트에 필요한 패키지와 그 종속성(Dependencies)을 올바른 버전으로 자동 설치해 줍니다. bower.json 파일에는 이러한 프런트엔드 패키지의 목록과 버전 정보가 정의됩니다.