C# 언어 버전 관리
최신 C# 컴파일러는 프로젝트의 대상 프레임워크를 기반으로 기본 언어 버전을 결정합니다. Visual Studio는 이 값을 변경하는 UI를 제공하지 않지만, csproj 파일을 편집하여 값을 변경할 수 있습니다. 기본값이 이렇게 선택되면 항상 대상 프레임워크와 호환되는 최신 언어 버전을 사용할 수 있게 됩니다. 프로젝트의 대상과 호환되는 최신 언어 기능을 이용할 수 있다는 이점이 있습니다. 또한, 기본값이 이렇게 선택되면 대상 프레임워크에서 사용할 수 없는 형식이나 런타임 동작이 필요한 언어를 사용하지 않을 수 있습니다. 기본값보다 최신의 언어 버전을 선택할 경우 컴파일 시간 및 런타임 오류를 진단하기 어려워질 수 있습니다.
C# 12는 .NET 8 이상 버전에서만 지원됩니다. C# 11은 .NET 7 이상 버전에서만 지원됩니다. C# 10은 .NET 6 이상 버전에서만 지원됩니다.
Visual Studio 버전별로 지원되는 .NET 버전에 대한 자세한 내용은 Visual Studio 플랫폼 호환성 페이지를 참조하세요. Mac용 Visual Studio 버전에서 지원되는 .NET 버전에 대한 자세한 내용은 Mac용 Visual Studio 플랫폼 호환성 페이지를 참조하세요. C# 버전과의 Mono 호환성은 C#용 Mono 페이지를 참조하세요.
Defaults
컴파일러는 다음 규칙에 따라 기본값을 결정합니다.
Target | 버전 | C# 언어 버전 기본값 |
---|---|---|
.NET | 8.x | C# 12 |
.NET | 7.x | C# 11 |
.NET | 6.x | C# 10 |
.NET | 5.x | C# 9.0 |
.NET Core | 3.x | C# 8.0 |
.NET Core | 2.x | C# 7.3 |
.NET Standard | 2.1 | C# 8.0 |
.NET Standard | 2.0 | C# 7.3 |
.NET Standard | 1.x | C# 7.3 |
.NET Framework | 모두 | C# 7.3 |
프로젝트가 해당 미리 보기 언어 버전이 있는 preview
프레임워크를 대상으로 하는 경우 사용되는 언어 버전은 미리 보기 언어 버전입니다. 따라서 릴리스된 .NET Core 버전을 대상으로 하는 프로젝트에 영향을 주지 않으면서 모든 환경에서 해당 미리 보기의 최신 기능을 사용할 수 있습니다.
Important
Visual Studio 2017의 새 프로젝트 템플릿은 새 프로젝트 파일에 <LangVersion>latest</LangVersion>
항목을 추가했습니다. 이러한 프로젝트의 대상 프레임워크를 업그레이드하면 <LangVersion>
설정이 새 대상 프레임워크의 기본값을 재정의할 수 있습니다. 프로젝트가 대상 프레임워크에 권장되는 컴파일러 버전을 사용하도록 하려면 프로젝트 파일에서 <LangVersion>latest</LangVersion>
을 제거해야 합니다. 최신 언어 기능에 액세스하려면 대상 프레임워크를 업데이트할 수 있습니다.
C# 언어 버전 참조
모든 표는 현재 C# 언어 버전을 보여줍니다. 이전 컴파일러는 모든 값을 이해하지 못할 수도 있습니다. 최신 .NET SDK를 설치하면 나열된 모든 항목에 액세스할 수 있습니다.
값 | 의미 |
---|---|
preview |
컴파일러가 최신 미리 보기 버전의 유효한 언어 구문을 모두 허용합니다. |
latest |
컴파일러가 최신 릴리스 버전(부 버전 포함)의 구문을 허용합니다. |
latestMajor 또는 default |
컴파일러가 최신 릴리스 주 버전의 구문을 허용합니다. |
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)에 포함된 구문만 허용합니다. |
참고 항목
default
값으로 LangVersion을 지정하는 것은 LangVersion 옵션을 생략하는 것과 다릅니다. default
를 지정하면 대상 프레임워크를 고려하지 않고 컴파일러가 지원하는 최신 버전의 언어가 사용됩니다. 예를 들어, 현재 버전의 Visual Studio 2022에서 .NET 6을 대상으로 하는 프로젝트를 빌드하면 LangVersion이 지정되지 않은 경우 C# 10이 사용되지만 LangVersion이 default
로 설정된 경우 C# 12가 사용됩니다.
.NET
피드백
https://aka.ms/ContentUserFeedback
출시 예정: 2024년 내내 콘텐츠에 대한 피드백 메커니즘으로 GitHub 문제를 단계적으로 폐지하고 이를 새로운 피드백 시스템으로 바꿀 예정입니다. 자세한 내용은 다음을 참조하세요.다음에 대한 사용자 의견 제출 및 보기