[Unity3D] CS1617: Invalid option ‘latest’ for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.

Unity 버전을 2018.4 로 업데이트 하고 나서 Visual Studio 2015 에서 다음과 같은 에러가 발생했습니다. 

error CS1617: Invalid option ‘latest’ for /langversion; must be ISO-1, ISO-2, Default or an integer in range 1 to 6.

LangVersion 값이 ISO-1, ISO-2, Default 혹은 1~6 사이의 정수 값 이어야 되는데 lastest로 잡혀 있다고 합니다.

MS 공식 문서에는 latest 가 정의 되어 있지만 Visual Studio 2019 에 적용되는 규칙이라고 합니다. Visual Studio 2015 이후에 업데이트된 값인가 봅니다.

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

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

프로젝트에 따라 C# 언어 버전이 결정되는 방법과 수동으로 조정할 수 있는 다양한 값에 대해 알아봅니다.

docs.microsoft.com

이 문제를 해결하는 방법들을 기록으로 남겨봅니다.

1. Visual Studio 메뉴를 이용한 방법

상단의 Project 메뉴에서 Assembly-CSharp Properties… 를 선택해 줍니다.

Assembly-CSharp Properties 창 좌측 메뉴에서 Build 를 선택하고 우측 하단의 Advanced… 버튼을 클릭합니다.

Advanced Build Settings 창을 열면 Language Version 값이 비어 있습니다.

Language Version 값을 선택하면 사용 가능한 값 목록이 나옵니다.

참고 

Assembly-CSharp Properties 창이 열리지 않는다면

Tools > Options > Tools for Unity > General 에서

Access to project properties 옵션을 False 에서 True 로 변환 후 Visual Studio 재시작

2. LangVersion 이 정의된 파일을 직접 수정

프로젝트 경로의 Assembly-CSharp.csproj 파일안에서 텍스트로 같은 내용을 확인 할 수 있습니다.

3. C# Script 에서 LangVersion 수정

VSTU에서 만든 프로젝트 파일 사용자 지정

VSTU에서 만든 프로젝트 파일 사용자 지정 – Visual Studio

VSTU에서 만든 프로젝트 파일 사용자 지정Customize project files created by VSTU 이 문서의 내용 –> Visual Studio Tools for Unity는 프로젝트 파일을 생성하는 동안 Unity 스타일의 콜백을 제공합니다.Visual Studio Tools for Unity provides a Unity-style callback during project file generation. VisualStudioInte

docs.microsoft.com

위 문서를 참고해 다음과 같은 Script 를 추가해 프로젝트 파일을 수정할 수 있습니다.

using SyntaxTree.VisualStudio.Unity.Bridge;
...

ProjectFilesGenerator.ProjectFileGeneration += ( string name, string content ) =>
{
	return content.Replace("<LangVersion>latest</LangVersion>","<LangVersion>6</LangVersion>");
};
...

4. Microsoft.Net.Compilers 최신 버전 설치

Visual Studio 의 NuGet Package 를 사용해 최신 버전의 Microsoft.Net.Compilers 설치해 C# 7.0 으로 업데이트 합니다.

단, 추가적인 패키지 설치가 필요할 수 있다고 합니다.

https://stackoverflow.com/questions/39461407/how-to-use-c-sharp-7-with-visual-studio-2015

How to use C# 7 with Visual Studio 2015?

Visual Studio 2017 (15.x) supports C# 7, but what about Visual Studio 2015 (14.x)? How can I use C# 7 with it?

stackoverflow.com

5. Visual Studio 최신 버전 사용

2017 이상의 Visual Studio 를 사용합니다.