C# 언어 버전 구성
Warning
LangVersion
요소를 latest
로 설정하는 것은 권장하지 않습니다. latest
설정은 설치된 컴파일러가 최신 버전을 사용한다는 의미입니다. 이는 머신마다 변경될 수 있어 빌드를 불안정하게 만들 수 있습니다. 또한 현재 SDK에 포함되지 않은 런타임 또는 라이브러리 기능이 필요할 수 있는 언어 기능도 지원합니다.
C# 버전을 명시적으로 지정해야 하는 경우 다음과 같은 여러 가지 방법으로 수행할 수 있습니다.
- 프로젝트 파일을 수동으로 편집합니다.
- 하위 디렉터리에 있는 여러 프로젝트의 언어 버전을 설정합니다.
- LangVersion 컴파일러 옵션을 구성합니다.
팁
프로젝트 속성 페이지에서 Visual Studio의 언어 버전을 확인할 수 있습니다. 빌드 탭 아래의 고급 창에 선택한 버전이 표시됩니다.
현재 사용 중인 언어 버전을 확인하려면 코드에 #error version
(대/소문자 구분)을 입력합니다. 이렇게 하면 컴파일러가 사용 중인 컴파일러 버전 및 현재 선택된 언어 버전을 포함하는 메시지가 있는 컴파일러 오류 CS8304를 보고합니다. 자세한 내용은 #error(C# 참조)를 참조하세요.
프로젝트 파일 편집
프로젝트 파일에서 언어 버전을 설정할 수 있습니다. 예를 들어 미리 보기 기능에 명시적으로 액세스하려는 경우 다음과 같은 요소를 추가합니다.
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
값 preview
는 컴파일러에서 지원하는 사용 가능한 최신 미리 보기 C# 언어를 사용합니다.
여러 프로젝트 구성
여러 프로젝트를 구성하려면 일반적으로 솔루션 디렉터리에 <LangVersion>
요소가 포함된 Directory.Build.props 파일을 만들면 됩니다. Directory.Build.props 파일에 다음 설정을 추가합니다.
<Project>
<PropertyGroup>
<LangVersion>preview</LangVersion>
</PropertyGroup>
</Project>
이제 해당 파일을 포함하는 디렉터리의 모든 하위 디렉터리에 있는 빌드는 미리 보기 C# 버전을 사용합니다. 자세한 내용은 빌드 사용자 지정을 참조하세요.
C# 언어 버전 참조
모든 표는 현재 C# 언어 버전을 보여줍니다. 이전 컴파일러는 모든 값을 이해하지 못할 수도 있습니다. 최신 .NET SDK를 설치하면 나열된 모든 항목에 액세스할 수 있습니다.
값 | 의미 |
---|---|
preview |
컴파일러가 최신 미리 보기 버전의 유효한 언어 구문을 모두 허용합니다. |
latest |
컴파일러가 최신 릴리스 버전(부 버전 포함)의 구문을 허용합니다. |
latestMajor 또는 default |
컴파일러가 최신 릴리스 주 버전의 구문을 허용합니다. |
13.0 |
컴파일러는 C# 13 이하에 포함된 구문만 허용합니다. |
12.0 |
컴파일러는 C# 12 이하에 포함된 구문만 허용합니다. |
11.0 |
컴파일러는 C# 11 이하에 포함된 구문만 허용합니다. |
10.0 |
컴파일러는 C# 10 이하에 포함된 구문만 허용합니다. |
9.0 |
컴파일러는 C# 9 이하에 포함된 구문만 허용합니다. |
8.0 |
컴파일러는 C# 8.0 이하에 포함된 구문만 허용합니다. |
7.3 |
컴파일러는 C# 7.3 이하에 포함된 구문만 허용합니다. |
7.2 |
컴파일러는 C# 7.2 이하에 포함된 구문만 허용합니다. |
7.1 |
컴파일러는 C# 7.1 이하에 포함된 구문만 허용합니다. |
7 |
컴파일러는 C# 7.0 이하에 포함된 구문만 허용합니다. |
6 |
컴파일러는 C# 6.0 이하에 포함된 구문만 허용합니다. |
5 |
컴파일러는 C# 5.0 이하에 포함된 구문만 허용합니다. |
4 |
컴파일러는 C# 4.0 이하에 포함된 구문만 허용합니다. |
3 |
컴파일러는 C# 3.0 이하에 포함된 구문만 허용합니다. |
ISO-2 또는 2 |
컴파일러는 ISO/IEC 23270:2006 C#(2.0)에 포함된 구문만 허용합니다. |
ISO-1 또는 1 |
컴파일러는 ISO/IEC 23270:2003 C#(1.0/1.2)에 포함된 구문만 허용합니다. |
.NET