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# 버전을 명시적으로 지정해야 하는 경우 다음과 같은 여러 가지 방법으로 수행할 수 있습니다.
- 프로젝트 파일을 수동으로 편집합니다.
- 하위 디렉터리에 있는 여러 프로젝트의 언어 버전을 설정합니다.
- LangVersion 컴파일러 옵션을 구성합니다.
팁
프로젝트 속성 페이지에서 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)에 포함된 구문만 허용합니다. |
.NET