c#에서 빌드를 하려고 했는데 아래와 같은 오류 문구가 발생했습니다.

"($(MsBuildMajorVersion) < 16)" 조건에서 숫자 대신 ""(으)로 계산되는 "$(MsBuildMajorVersion)"에 대해 숫자 비교를 시도했습니다"
해당 오류는 MSBuild의 내부속성에 MsBuildMajorVersion이 비어있어서 숫자에 대한 비교가 불가능 하다는 신호입니다.
빌드 시에 MSBuild의 버젼 정보를 못읽어오고 있다. 이렇게 생각하시면 될것 같습니다.
※해결법
- Visual Studio 버전 업
비주얼 스튜디오의 버젼을 2019보다 위인 2022버전을 사용하시면 됩니다.
이는 visual Studio 2019이하에선 일부 프로젝트의 MsBuildMajorVersion 변수가 인식이 안될 수 있습니다.
단 저의 경우에는 이미 2022로 빌드중이었기에 위 해결법은 통하지 않았습니다.
- MsBuildMajorVersion이 비어 있는 경우 기본값 설정
프로젝트파일에 MsBuildMajorVersion을 추가해주는 방법입니다.
이 방법은 기존의 MsBuildMajorVersion이 비어서 생기는 오류에 버젼을 지정해서 막아주는 방식입니다.
<PropertyGroup>
<MsBuildMajorVersion Condition="'$(MsBuildMajorVersion)' == ''">17</MsBuildMajorVersion>
</PropertyGroup>
위 코드를 .csproj 파일의 상단에 넣으면 됩니다.
예시

저의 경우에도 위처럼 csproj파일에 지정을 했습니다.
※해결
해당 파일에 위 코드를 설정한 뒤 저장하고 재 빌드를 하면 아래와 같이 무사히 빌드가 실행 되는것을 확인 할수 있습니다.

.net6/7에서는 정상적으로 채워져 진행되지만 .net framework 4.x 버젼에서는 visual Studio 나 MsBuild경로 dotnet CLI 경로 NuGet 패키지 등에서 꼬이면서 값이 비는 경우가 생길 수 있습니다.
저의 경우에도 .net framework.4.x 버젼을 사용하면서 생긴 문제로 위와같은 이유로 발생한것 같습니다.
위 오류가 발생할 경우 .csproj파일에서 수정하거나 비주얼 스튜디오의 버젼을 올려서 사용해보시길 바라겠습니다.
'C# > Winform' 카테고리의 다른 글
| C# 오류 "lc.exe"이(가) 종료되었습니다(코드: -1) 오류 해결 법 (0) | 2025.11.13 |
|---|
