다음을 통해 공유


C# 언어 버전 구성

이 문서의 정보는 .NET 5 이상에 적용됩니다. UWP 프로젝트의 경우 UWP 버전선택 문서에 있는 이 정보를 참조하세요.

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

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

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

경고

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

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

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

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

프로젝트 파일 편집

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

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

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

여러 프로젝트 구성

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

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

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

비고

C# 및 VB의 버전은 다릅니다. 하위 디렉터리에 두 언어에 대한 프로젝트가 포함된 폴더에는 Directory.Build.Props 파일을 사용하지 마세요. 버전이 일치하지 않습니다.

C# 언어 버전 참조

중요하다

대상 TFM과 연결된 버전보다 최신 C# 언어 버전을 사용하는 것은 지원되지 않습니다.

모든 표는 현재 C# 언어 버전을 보여줍니다. 이전 컴파일러는 모든 값을 이해하지 못할 수도 있습니다. 최신 .NET SDK를 설치하면 나열된 모든 항목에 액세스할 수 있습니다.

가치 의미
preview 컴파일러가 최신 미리 보기 버전의 유효한 언어 구문을 모두 허용합니다.
latest 컴파일러가 최신 릴리스 버전(부 버전 포함)의 구문을 허용합니다.
latestMajor
또는 default
컴파일러가 최신 릴리스 주 버전의 구문을 허용합니다.
14.0 컴파일러는 C# 14 이하에 포함된 구문만 허용합니다.
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)에 포함된 구문만 허용합니다.