[C#] MSBuild 빌드 시 C# 언어 버전 변경
2020. 3. 26. 21:33
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
728x90
'Program Language > C#' 카테고리의 다른 글
[C#] 한글 2byte 로 계산 하는 방법 (0) | 2020.06.20 |
---|---|
[C#] ICloneable 인터페이스를 이용한 객체 복사 (1) | 2020.05.19 |
[C#] C#에서 unsafe 키워드 사용 방법 (0) | 2020.03.10 |
[C#] SQL Injection 예방 코드 (1) | 2020.02.12 |
[C#] const와 readonly의 차이 (0) | 2020.02.06 |