[C#] MSBuild 빌드 시 C# 언어 버전 변경

728x90
반응형

 

.NET Framework 4.8 환경에서 개발을 진행 하던 도중, 기본 리터럴 기능을 사용할 일이 있었습니다. 

직접 사용한 것은 아니지만, 다른 분이 작업한 내용을 우연히 가지고 오는 과정에서 빌드 오류가 발생해서 찾아본 내용이였습니다. 

Visual Studio 에서는 정상적으로 빌드가 진행이 되지만, MSBuild 를 이용해서 빌드를 진행하는 과정에서 .NET Framework의 버전은 같으나, 언어 버전이 발생해서 빌드 오류가 발생했습니다. 

 

 

 


1. 기본 리터럴 구문의 사용은 C# 7.0 에서는 사용 불가!

public DataModel GetData()
{
    return default( DataModel );
}

 

'기본 리터럴' 기능은 C# 7.0에서 사용할 수 없습니다. 언어 버전 7.1 이상을 사용하세요.

 

 


 

2. 빌드 구성에서의 언어 버전 변경

프로젝트 속성에 들어가면, 빌드에 대한 구성을 변경하는 메뉴를 확인 할 수 있습니다. 

아래 화면 우측 하단의 "고급" 메뉴를 클릭해줍니다. 

 

 

 

 

고급 빌드 설정에 들어가면, 언어 버전을 변경하는 메뉴가 보여집니다. 

VS에서는 최신 주버전 빌드로 되어 있어 빌드에 무리가 없지만, MSBuild 로 빌드를 할 경우에는 특정 언어 버전을 명시해주는게 좋습니다. 

 

 

아래와 같이 7.3 버전으로 변경하였습니다. 

 

 

 


 

3. 프로젝트 파일 편집

위 방법으로도 가능하지만, 프로젝트 파일을 직접 변경함으로써, 오류를 수정할 수 있습니다. 

LangVersion 을 특정 버전으로 명시해 주면 됩니다. 

  <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
    <DebugSymbols>true</DebugSymbols>
    <DebugType>full</DebugType>
    <Optimize>false</Optimize>
    <OutputPath>bin\</OutputPath>
    <DefineConstants>DEBUG;TRACE</DefineConstants>
    <ErrorReport>prompt</ErrorReport>
    <WarningLevel>4</WarningLevel>
    <LangVersion>7.3</LangVersion>
  </PropertyGroup>

 

https://docs.microsoft.com/ko-kr/dotnet/csharp/language-reference/configure-language-version

 

C# 언어 버전 관리 - C# 가이드

C# 언어 버전은 프로젝트에 따라 결정된다는 사실과 그 이유를 알아봅니다. 기본값을 수동으로 재정의하는 방법을 알아봅니다.

docs.microsoft.com

 

 

 

728x90