다음을 통해 공유


C# 언어 버전 구성

Warning

LangVersion 요소를 latest로 설정하는 것은 권장하지 않습니다. latest 설정은 설치된 컴파일러가 최신 버전을 사용한다는 의미입니다. 이는 머신마다 변경될 수 있어 빌드를 불안정하게 만들 수 있습니다. 또한 현재 SDK에 포함되지 않은 런타임 또는 라이브러리 기능이 필요할 수 있는 언어 기능도 지원합니다.

C# 버전을 명시적으로 지정해야 하는 경우 다음과 같은 여러 가지 방법으로 수행할 수 있습니다.

프로젝트 속성 페이지에서 Visual Studio의 언어 버전을 확인할 수 있습니다. 빌드 탭 아래의 고급 창에 선택한 버전이 표시됩니다.

현재 사용 중인 언어 버전을 확인하려면 코드에 #error version(대/소문자 구분)을 입력합니다. 이렇게 하면 컴파일러가 사용 중인 컴파일러 버전 및 현재 선택된 언어 버전을 포함하는 메시지가 있는 컴파일러 오류 CS8304를 보고합니다. 자세한 내용은 #error(C# 참조)를 참조하세요.

Visual Studio에서 다른 C# 버전을 선택할 수 없는 이유

Visual Studio에서는 기본 버전이 프로젝트의 대상 프레임워크(TFM)에 맞춰져 있으므로 UI를 통해 언어 버전을 변경하는 옵션을 사용하지 않도록 설정할 수 있습니다. 이 기본 구성은 언어 기능과 런타임 지원 간의 호환성을 보장합니다.

예를 들어 대상 TFM 변경(예: .NET 6에서 .NET 9)을 변경하면 그에 따라 언어 버전이 C# 10에서 C# 13으로 업데이트됩니다. 이 방법은 런타임 호환성 문제를 방지하고 지원되지 않는 언어 기능으로 인한 예기치 않은 빌드 오류를 최소화합니다.

자동으로 선택된 언어 버전과 다른 특정 언어 버전이 필요한 경우 아래 메서드를 참조하여 프로젝트 파일에서 직접 기본 설정을 재정의합니다.

프로젝트 파일 편집

프로젝트 파일에서 언어 버전을 설정할 수 있습니다. 예를 들어 미리 보기 기능에 명시적으로 액세스하려는 경우 다음과 같은 요소를 추가합니다.

<PropertyGroup>
   <LangVersion>preview</LangVersion>
</PropertyGroup>

preview는 컴파일러에서 지원하는 사용 가능한 최신 미리 보기 C# 언어를 사용합니다.

여러 프로젝트 구성

여러 프로젝트를 구성하려면 일반적으로 솔루션 디렉터리에 요소가 포함된 <LangVersion> 파일을 만들면 됩니다. Directory.Build.props 파일에 다음 설정을 추가합니다.

<Project>
 <PropertyGroup>
   <LangVersion>preview</LangVersion>
 </PropertyGroup>
</Project>

이제 해당 파일을 포함하는 디렉터리의 모든 하위 디렉터리에 있는 빌드는 미리 보기 C# 버전을 사용합니다. 자세한 내용은 빌드 사용자 지정을 참조하세요.

C# 언어 버전 참조

중요하다

대상 TFM과 연결된 버전보다 최신 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)에 포함된 구문만 허용합니다.