다음을 통해 공유


컴파일러 오류 CS1617

LangVersion에 대한 'option' 옵션이 잘못되었습니다. 지원되는 값을 나열하려면 ?을 사용합니다.

이 오류는 LangVersion 명령줄 스위치 또는 프로젝트 설정을 사용하지만 유효한 언어 옵션을 지정하지 않는 경우 발생합니다. 이 오류를 해결하려면 명령줄 구문 또는 프로젝트 설정을 확인하고 나열된 옵션 중 하나로 변경합니다.

예를 들어 csc -langversion:ISO 를 사용하여 컴파일하면 CS1617 오류가 생성됩니다.

지원되는 언어 버전을 나열하는 방법

지원되는 언어 버전 목록을 보려면 빌드하기 전에 이 문서의 테이블을 참조하거나 프로젝트 파일에서 -langversion:?컴파일하거나 일시적으로 설정합니다 <LangVersion>?</LangVersion> .

지원되는 언어 버전을 확인하는 가장 신뢰할 수 있는 방법은 현재 지원되는 모든 언어 버전을 나열하는 이 문서의 끝에 있는 참조 테이블을 참조하는 것입니다.

C# 컴파일러를 직접 사용

-langversion:? C# 컴파일러에서 이 옵션을 사용합니다. .NET SDK 설치에서 csc.dll의 경로를 찾아야 합니다.

dotnet exec "/path/to/dotnet/sdk/version/Roslyn/bincore/csc.dll" -langversion:?

예를 들어 .NET 8 SDK가 있는 Linux의 경우:

dotnet exec "/usr/lib/dotnet/sdk/8.0.117/Roslyn/bincore/csc.dll" -langversion:?

정확한 경로는 운영 체제 및 .NET SDK 버전에 따라 달라집니다.

프로젝트 파일에서 <LangVersion>?</LangVersion>를 일시적으로 설정하고, 진단 수준으로 빌드할 수 있습니다.

dotnet build -v diagnostic

출력에서 "지원되는 언어 버전:" 줄을 찾습니다.

경고

프로젝트 파일에 <LangVersion>?</LangVersion>를 설정하면 지원되는 버전을 표시한 후 빌드를 실패하게 합니다. 이는 컴파일러가 코드를 계속 컴파일하는 대신 버전을 나열한 후 종료하기 때문입니다. 목록을 본 후 이 설정을 제거합니다.

-langversion에 유효한 값

언어 버전의 유효한 값은 사용 중인 .NET 버전에 따라 다릅니다. 어떤 버전의 .NET에서 어떤 언어 버전을 사용할 수 있는지에 대한 자세한 내용은 언어 버전 규칙을 참조하세요. 최신 언어 버전을 사용하려고 시도하는 동안 이 오류가 표시되면 더 낮은 언어 버전으로 다운그레이드하거나 .NET SDK를 해당 언어 버전을 지원하는 버전으로 업데이트합니다.

다음 표에서는 -langversion에 대한 현재 유효한 값을 지정합니다.

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