CS1617 : / langversion에 대한 잘못된 옵션 '6'; ISO-1, ISO-2, 3, 4, 5 또는 기본값이어야합니다.


92

Windows 2008 Server 컴퓨터에서 새로운 ASP.NET MVC 응용 프로그램 (VS 2015 커뮤니티에서 곧바로)을 실행할 때 해당 오류가 계속 발생했습니다.


3
언어 버전을 5로 다운 그레이드합니다. 살펴보기 : 언어 버전을 변경하는 방법
NASSER

필자의 경우 System.Web.Mvc.dll을 버전 5.2.3에서 5.2.7로 업그레이드했는데 버전이 올바르지 않기 때문에이 문제가 해결되었습니다.
Dino Liu

2019 년 에도 비슷한 오류가 발생했습니다. 이 관련 GitHub 문제를 참조하십시오 .
Uwe Keim

답변:


105

많은 사람들이 그것에 접근하고 있으므로 여기에 게시하고 싶었습니다.

이 사람 덕분에 미친 쉬운 해결 방법을 찾았습니다. Expertdebugger .

다음과 같이 언어 버전을 C # 6에서 C # 5로 다운 그레이드하면됩니다.

<system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
        <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
    </compilers>
</system.codedom>

변경 langversion:66 5에서 바닥을 향해 -langversion:5

나를 위해 고쳤습니다. 감사합니다.


1
도와 주셔서 감사합니다.
AH.

28
이는 컴파일러에게 6 대신 C # 버전 5로 컴파일하도록 지시하는 것입니다. .NET 4.6 프로젝트를 만드는 경우 원하는 것은 아닙니다 ... 실제로 변경해야하는 것은 컴파일러 유형입니다. 이 질문에 대한 또 다른 대답!
Nuno Agapito 2015

1
또는 <system.codedom> 블록 자체를 제거하면 문제도 해결됩니다.
Anupam Singh

5
어디로 바꾸시겠습니까? 이 코드를 어디에 넣어야합니까?
Unbreakable

web.config 또는 app.config 파일에 넣으십시오
csharpforevermore

83

C # 6.0을 사용하려는 경우 :

  1. 프로젝트의 .NET 버전이 4.5.2 이상인지 확인하십시오.
  2. 그런 다음 .config파일을 확인하여 다음 수정을 수행하십시오.

을 찾아 system.codedom아래와 같이 보이게됩니다 너무 수정 :

<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
 </compilers>
</system.codedom>

그것이 바로 제가 찾던 것입니다. ASP.NET MVC 프로젝트를 .NET Framework 4.5.2에서 4.6으로 업그레이드 한 후이 오류가 발생하기 시작했습니다. 확실하지는 않지만 Visual Studio가 자체적으로 해당 라인을 업데이트하면 더 좋을 것이라고 생각합니다.
Zignd

3
실제로 문제를 해결하고 컴파일러 대신 이전 버전에 다시 하락의 최신 버전을 사용할 수 있습니다 이것은 정확한 답을해야한다
SM3RKY

1
SM3RKY에 동의합니다.이 답변은 문제를 우회하는 것이 아니라 해결하기 때문에 더 관련성이 있습니다!
Jon Story

VS 2015 Community를 사용하는 기존 프로젝트에 대해 솔루션을 .net 4.6으로 업그레이드하면이 오류가 발생합니다. VS 2015 업데이트 3을 업데이트 한 후이 수정 사항은 새 프로젝트에 기본적으로 제공됩니다. 그러나 대답은 정확한 수정입니다!
Mahmut C

이것은 ASP.NET (웹 양식)를 사용하여 닷넷 4.6.2 프로젝트에 나를 위해 문제를 해결하고 VB.NET
에릭 휴잇에게

14

내 경우 오류의 직접적인 원인은 다음과 같습니다.

빌드-> 고급-> 언어 버전

이는 잘못된 언어 옵션이 있다는 오류이므로 의미가 있습니다.

하지만 이전에는 잘 작동 했으므로 선택 했어야합니다. 무엇이 바뀌 었습니까? 제가 2015 년을 사용하고있는 동안 제 팀원이 2017 년으로 업그레이드 된 것으로 나타났습니다. 그가 프로젝트를 변경 한 후 언어 버전이 변경되었고 소스 제어에 대한 변경 사항을 받았습니다. 그러나 선택한 버전은 내 버전의 vs에서 사용할 수 없으므로 비어 있습니다. 따라서 오류가 발생했습니다. 언어 드롭 다운에서 값을 선택한 후 (기본값 선택) 새 오류가 나타납니다. 새로운 오류로 인해 최신 버전의 C #을 사용하는 모든 코드 줄에서 빌드 오류가 발생했습니다. 동일한 기능을 수행하도록 코드를 변경했지만 C # 버전 구문과 문제가 해결되었습니다.

따라서 오류의 직접적인 원인은 실제로 잘못된 언어 버전 선택 이었지만 근본 원인은 서로 다른 버전과 / c # 버전이 충돌했기 때문입니다.


1
이 답변은 다른 모든 것을 확인한 후 도움이되었습니다. 감사
MindRoasterMir

1
이 답변은 C # 8로 설정된 프로젝트를 실행하려고했지만 Visual Studio 2017에서는 지원되지 않는 경우에도 적용되었습니다. VS 2019
Vinícius Gabriel

13

제 경우에는 오류가 다음과 같습니다.

오류 CS1617 / langversion에 대한 잘못된 옵션 'latest'; ISO-1, ISO-2, 기본값 또는 1 ~ 6 범위의 정수 여야합니다.

메모장으로 .csproj 파일을 열었 더니 다음 줄을 보았습니다.

<PropertyGroup>
    <LangVersion>latest</LangVersion>
</PropertyGroup>

1에서 6 사이의 정수에 대한 최신 정보를 변경했습니다.

<LangVersion>6</LangVersion>

오류가 사라졌습니다!


대단히 감사합니다! 이제 VS2015 및 Unity2018에서 디버깅이 작동합니다
8Observer8 2019

메모장에서 정확히 열 필요는 없지만 Visual Studion에서 프로젝트를 업로드 한 다음 프로젝트를 편집 할 수 있으므로이 문제도 해결됩니다.
Shantu

12

제 경우에는 잘못된 MSBuild.exe를 사용했습니다.

C:\Windows\Microsoft.NET\Framework64\v4.0.30319

오류를 해결하기 위해 Visual Studio 2017 MSBuild.exe 사용을 시작하도록 PATH 환경 변수를 업데이트했습니다.

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin\MSbuild.exe

자세한 내용은 다음 링크를 참조하십시오. 오류 CS1056 : tfs 연속 통합 프로세스에서 msbuild를 실행하는 예기치 않은 문자 '$'


여기서도 마찬가지입니다. 제 경우에는 MSBuild 도구를 설치하고 "C : \ Program Files (x86) \ MSBuild \ 14.0 \ Bin \ MSBuild.exe"에서 msbuild를 사용했습니다.
falstaff

10

제 경우에는 (다른 시스템에서 프로젝트 생성) :

  1. 프로젝트 정리 (솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 항목 정리 클릭).
  2. 그런 다음 프로젝트를 빌드합니다 (솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 빌드 항목 클릭).

이 프로젝트를 실행할 수 있습니다.


5

언어 버전을 6에서 5로 변경하는 대신 컴파일러 태그의 "type"속성을 다음과 같이 변경하십시오.

Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089

...에

Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

4

Microsoft.Net.Compilers Nuget 패키지를 최신 버전 (최소 2.x)으로 업그레이드합니다.


3

나에게 가장 쉬운 해결책은 패키지 관리자를 통해 .Net 컴파일러를 업그레이드하는 것이 었습니다.

설치 패키지 Microsoft.Net.Compilers

Web.Config 줄을 다음과 같이 변경하십시오.

<system.codedom>
 <compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
 </compilers>
</system.codedom>

1

ASP.NET MVC 4 프로젝트가 Microsoft.Net.Compilers 패키지의 특정 버전을 참조하고 있었기 때문에 이것이 문제였습니다. Visual Studio는 컴퓨터에 설치된 컴파일러가 아닌이 특정 패키지의 컴파일러를 사용하고있었습니다.

경고 또는 무언가가 VS2019에서 좋았을 것입니다 :-)

그런 다음 해결책은 Microsoft.Net.Compilers 패키지를 최신 버전으로 업데이트하는 것입니다.

버전 1.x는 C # 6 용입니다. 버전 2.x는 C # 7 용입니다. 버전 3.x는 C # 8 용입니다.이 문제를 해결하는 방법이 즉시 명확하지 않았습니다. Visual Studio는 프로젝트 설정에서 새 버전을 선택하여 현재 설정이 프로젝트에 설치된 패키지와 충돌한다고 제안하거나 암시 할 수 있습니다.

(나는 IDE가 실제로 사용하려는 CSC.EXE를 찾기 위해 진단 수준 MSBuild 로깅을 켰습니다)

https://developercommunity.visualstudio.com/content/problem/519531/c-7x-versions-do-not-seem-to-work-in-vs2019.html


1

위의 모든 옵션이 작동하지 않고 Microsoft.Net.Compilers 및 CodeDom과 같은 nuget 패키지를 사용했지만 여전히 작동하지 않는 경우 프로젝트 파일 열기 프로젝트 파일에 문제가있는 것입니다. 프로젝트 파일이 선택한 언어를 지원하지 않는 컴파일러 옵션 중 하나를 사용하고 있습니다. 메모장 ++로 프로젝트 파일을 열고 다음 줄을 제거하십시오.

Orignal 프로젝트 파일

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />
  <!--Don't delete below one-->
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />

다음 줄 제거

  <Import Project="..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.Toolset.3.7.0\build\Microsoft.Net.Compilers.Toolset.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.3.7.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.0.0\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props" Condition="Exists('$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)\TypeScript\Microsoft.TypeScript.Default.props')" />


0

난 그냥은 변경 langversiondefault그것은 나를 위해 일했습니다. VS 2015

<system.codedom>
<compilers>
  <compiler language=”c#;cs;csharp” extension=”.cs” type=”Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:default /nowarn:1659;1699;1701″>
    <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
  <compiler language=”vb;vbs;visualbasic;vbscript” extension=”.vb” type=”Microsoft.VisualBasic.VBCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089″ warningLevel=”4″ compilerOptions=”/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+”>
      <providerOption name=”CompilerVersion” value=”v4.0″/>
  </compiler>
</compilers>


0

솔루션 정리 및 다시 빌드 필자의 경우 이전 설정이 불일치로 인해 차단되었습니다. 새 프로젝트를 가져 와서 빌드하고 버전 변경 등을 시도했습니다. 솔루션을 청소하고 빌드가 나를 위해 일했습니다.


0

제 경우에는 GITHUB에서 mattorg의 keycloak 구현 샘플 코드가 포함 된 라이브러리를 다운로드했습니다 : https://github.com/mattmorg55/Owin.Security.Keycloak/tree/dev/samples

.Net Framework 4.6.1을 사용했기 때문에 솔루션은 매우 쉬웠지만 프로젝트는 처음에 4.6.2를 사용하도록 간청했습니다. 다운로드했지만 Visual Studion의 모든 인스턴스를 다시 시작할 때 (또는 모든 인스턴스를 더 잘 닫을 때) 먼저 적극적으로 선택되었습니다. 이 프로젝트는 4.6.1로 조작되었습니다 (내가 원하지 않았고 그렇게 선택했지만).

따라서 .Net Framework 4.6.1을 선택하기 위해 구성을 다시 선택한 후 오류가 즉시 사라졌습니다.


0

제 경우에는 오류 메시지가 다음과 같습니다.

ASPNETCOMPILER : 오류 CS1617 : / langversion에 대한 잘못된 옵션 '7.3'; ISO-1, ISO-2, 기본값 또는 1 ~ 6 범위의 정수 여야합니다.

으로 이 GitHub의 문제에 언급 하고, 이 VS 개발자 커뮤니티 게시물 은 이전의 버그 것 같다 Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet 패키지로 제공된다.

이 NuGet 패키지를 3.6.0으로 업그레이드 한 후에도 웹 응용 프로그램에서 오류가 계속 발생했습니다.

해결책

이 작업을 수행하려면 웹 응용 프로그램에서 이전 "bin \ Roslyn"폴더를 삭제해야한다는 사실을 알게되었습니다.

최신 Microsoft.CodeDom.Providers.DotNetCompilerPlatform NuGet 패키지 (내 경우에는 3.6.0)가 더 이상 자체 "Rosyln"폴더를 가져 오지 않는 것 같습니다.있는 경우 이전 "Roslyn"폴더가 컴파일 중에 우선권을 가졌습니다.


0

리포지토리를 새 위치로 이동 한 후 내 리포지토리를 풀다운 할 때 이런 일이 발생했습니다. 해결책은이 오류를 표시하는 각 프로젝트를 언로드 한 다음 다시로드하는 것이 었습니다.

몇 가지 다른 옵션을 시도했지만 아무것도 효과가 없었습니다. 또한이 상황에서 내 구성 파일은 언어 버전 6을 사용하도록 설정되었으므로 기본값으로 설정해도 문제가 해결되지 않았습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.