.NET Core/5+ 빌드 시 runtimeconfig.json에 설정을 반영하는 방법
예전에 아래의 옵션을 소개해 드렸는데요,
C# - .NET Core 3.0 이상부터 제공하는 runtimeOptions의 rollForward 옵션
; https://www.sysnet.pe.kr/2/0/12471
아마도 이 옵션을 설정하기 위해, 빌드한 결과물에서 직접 runtimeconfig.json 파일을 열어 편집하지는 않을 것입니다. 현실적으로는, 빌드 과정 중에 처리되도록 csproj에 다음과 같은 노드를 추가하는 식일 텐데요,
<!-- https://learn.microsoft.com/en-us/dotnet/core/versions/selection#control-roll-forward-behavior -->
<PropertyGroup>
<RollForward>Major</RollForward>
</PropertyGroup>
이 외에도 기존 닷넷 프레임워크의 app.settings처럼 프로젝트에 runtimeconfig.template.json 이름의 파일을 추가해 설정하는 것도 가능합니다.
Example runtimeconfig.template.json file
; https://learn.microsoft.com/en-us/dotnet/core/runtime-config/#example-runtimeconfigtemplatejson-file
문제는 이 파일의 형식이 runtimeconfig.json과 일치하지 않는다는 점입니다. 그래서 (저처럼 ^^;) 무심코 다음과 같이 설정하면,
{
"runtimeOptions": {
"tfm": "netcoreapp3.0",
"rollForward": "Major",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.0.0"
}
}
}
빌드 후 생성되는 runtimeconfig.json 파일에는 이렇게 내용이 포함됩니다.
{
"runtimeOptions": {
"tfm": "netcoreapp3.0",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.0.0"
},
"rollForward": "Major"
},
"runtimeOptions": {
"tfm": "netcoreapp3.0",
"rollForward": "Major",
"framework": {
"name": "Microsoft.NETCore.App",
"version": "3.0.0"
}
}
}
전혀 원치 않는 결과죠? 게다가 저런 경우 첫 번째 발견한 runtimeOptions의 설정을 사용합니다. "
Example runtimeconfig.template.json file" 문서를 잘 읽어보시면 이것의 원인을 찾을 수 있습니다.
If you're placing the options in the template JSON file, omit the runtimeOptions property.
그렇습니다. ^^; "runtimeOptions" 내부의 설정에서 필요한 것만 포함하면 되는 것입니다.
{
"rollForward": "Major"
}
[이 글에 대해서 여러분들과 의견을 공유하고 싶습니다. 틀리거나 미흡한 부분 또는 의문 사항이 있으시면 언제든 댓글 남겨주십시오.]