CS1617: /langversion 옵션 '6'이 잘못되었습니다.ISO-1, ISO-2, 3, 4, 5 또는 기본값이어야 합니다.
신규 ASP 실행 시 계속 에러가 발생.Windows 2008 Server 머신상의 NET MVC 애플리케이션(VS 2015 Community에서 직행).
많은 분들이 마주치고 계시기 때문에 저는 여기에 글을 올리고 싶었습니다.
디버거 전문가 덕분에 아주 쉬운 해결 방법을 찾았습니다.
다음과 같이 언어 버전을 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=\"Web\" /optionInfer+">
<providerOption name="CompilerVersion" value="v4.0"/>
</compiler>
</compilers>
</system.codedom>
변경합니다.langversion:6향해서 6에서 5까지 - 6으로 5로 - 6으로 - 5로 - 을 때 - 을 때 - 을 때.langversion:5
날 위해 고쳤어.감사합니다.
C# 6.0을 사용하는 경우:
- 프로젝트 내용을 확인합니다.NET 버전은 4.5.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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
제 경우 오류는 다음과 같습니다.
오류 CS1617 /langversion에 대한 잘못된 옵션 'latest'입니다. ISO-1, ISO-2, 기본값 또는 1~6 범위의 정수여야 합니다.
메모장에서 .csproj 파일을 열었을 때 다음 행이 나타납니다.
<PropertyGroup>
<LangVersion>latest</LangVersion>
</PropertyGroup>
1 ~ 6 범위의 정수로 최신을 변경했습니다.
<LangVersion>6</LangVersion>
오류가 사라졌습니다!
제 경우 오류의 직접적인 원인은 다음과 같습니다.
에러가 언어 옵션이 잘못되어 있는 것을 나타내고 있기 때문에, 이것은 의미가 있습니다.
하지만 이전에도 잘 작동했으니까 선택되었을 겁니다.무엇이 바뀌었을까요?저희 팀의 멤버가 vs 2017으로 업그레이드 된 것을 알게 되었습니다.제가 아직 2015년을 사용하고 있을 때, 그가 프로젝트를 변경한 후 언어 버전이 변경되어 소스 컨트롤에 대한 변경을 받았습니다만, 선택한 버전은 제 버전의 vs에서 사용할 수 없기 때문에, 공백이 되어 버렸습니다.그 때문에 에러가 발생했습니다.언어 드롭다운에서 값을 선택한 후(기본값 선택), 새로운 오류가 표시되었습니다.새로운 오류로 인해 새로운 버전의 c#을 사용한 코드 행에서 빌드 오류가 발생했습니다.i는 동일한 기능을 수행하도록 코드를 변경했지만, c# 버전의 구문과 문제는 해결되었습니다.
따라서 에러의 직접적인 원인은 언어 버전이 잘못 선택되었기 때문이지만 근본 원인은 다른 vs/c# 버전이 경합했기 때문입니다.
내 경우(다른 시스템에서 프로젝트 생성):
- 클린 프로젝트(솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 클린 항목을 클릭).
- 그런 다음 프로젝트를 빌드합니다(솔루션 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 빌드 항목을 클릭).
내가 이 프로젝트를 운영할 수 있어.
잘못된 MSBuild.exe를 사용하고 있는 경우, 다음 항목에 있는 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를 실행하고 있습니다.
언어 버전을 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
Microsoft 를 업그레이드 합니다.Net.Compilers Nuget 패키지를 최신 버전(2.x 이상)으로 변경
모든 옵션이 기능하지 않고 Microsoft와 같은 nuget 패키지를 사용하고 있는 경우.Net.컴파일러와 CodeDom이 아직 작동하지 않는 경우 프로젝트 파일을 여는 데 문제가 있습니다.프로젝트 파일에서 선택한 언어를 지원하지 않는 컴파일러 옵션 중 하나를 사용하고 있습니다.메모장++로 프로젝트 파일을 열고 다음 줄을 제거합니다.
오리그널 프로젝트 파일
<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')" />
ASP가 문제였거든요NET MVC 4 프로젝트는 Microsoft의 특정 버전을 참조하고 있었습니다.Net. 컴파일러 패키지.Visual Studio는 컴퓨터에 설치된 컴파일러가 아닌 이 특정 패키지의 컴파일러를 사용하고 있었습니다.
VS2019의 경고 같은 것이 좋았을 텐데 :-)
그 후 해결책은 Microsoft를 업데이트하는 것입니다.Net.컴파일러가 새로운 버전으로 패키지됩니다.
버전 1.x는 C#6용 버전 2.x는 C#7용 버전 3.x는 C#8용 버전입니다.이 문제를 해결하는 방법은 즉시 명확하지 않습니다.Visual Studio는 프로젝트 설정에서 새로운 버전을 선택함으로써 해당 설정이 프로젝트에 설치된 패키지와 충돌하는 것을 제안하거나 암시할 수 있습니다.
(진단 레벨 MSBuild 로깅을 켜고 어떤 CSC를 조사했습니다.IDE가 실제로 사용하려고 하는 EXE)
가장 쉬운 해결책은 의 업그레이드였습니다.Net 컴파일러 (Package Manager 경유)
Microsoft 의 인스톨 패키지.Net. 컴파일러
웹을 바꾸는 것입니다.여기에 행 설정
<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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
같은 에러가 발생하고 있습니다.
저 같은 경우에는 해결이 쉬웠어요.
먼저 asp.net 프로젝트의 속성을 엽니다.
그런 다음 타이프스크립트 빌드를 클릭하고 선택한 타이프스크립트 버전을 확인합니다.
제 경우, 선택한 버전은 2.5(사용 불가)입니다.
그래서 이것을 최신 사용 가능 옵션 사용으로 변경하여 코드를 수정했습니다.
이전: 오류가 있는 TypeScript 버전(이미지)
이후: TypeScript 버전 수정(이미지)
제 경우 오류 메시지는 다음과 같습니다.
ASPNETCOMPILER: 오류 CS1617: /langversion에 대한 잘못된 옵션 '7.3'입니다. ISO-1, ISO-2, 기본값 또는 1~6 범위의 정수여야 합니다.
이 GitHub 호에서 언급했듯이, 이 VS Developer Community는 오래된 Microsoft의 버그인 것 같습니다.코드돔프로바이더DotNetCompilerPlatform NuGet 패키지.
이 NuGet 패키지를 3.6.0으로 업그레이드한 후에도 웹 응용 프로그램에서 오류가 계속 발생했습니다.
솔루션
이 작업을 수행하려면 웹 어플리케이션에서 오래된 "bin\Roslyn" 폴더를 삭제해야 한다는 것을 알게 되었습니다.
새로운 마이크로소프트인 것 같다.코드돔프로바이더DotNetCompilerPlatform NuGet 패키지(3.6.0의 경우)는 자체 "Rosyln" 폴더를 가져오지 않으며, 존재하는 경우 컴파일 시 이전 "Roslyn" 폴더가 우선됩니다.
Microsoft를 업데이트했습니다.Net. 버전 2.0 이후 컴파일러
저는 그냥 바꿨을 뿐이에요.langversion로.default나한테는 효과가 있었어요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=\"Web\" /optionInfer+”>
<providerOption name=”CompilerVersion” value=”v4.0″/>
</compiler>
</compilers>
클린솔루션과 빌드 재작성 제 경우는 불일치로 인해 이전 설정이 차단되어 있던 것이 무엇이든 상관없습니다.새로운 프로젝트를 Import하여 빌드하고 버전 변경을 시도하며 솔루션을 청소하고 빌드하는 등의 작업을 수행했습니다.
제 경우, 저는 GITHUB에서 mattorg의 키클로크 구현 샘플 코드가 포함된 라이브러리를 다운로드하고 있었습니다.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 오류는 즉시 사라졌습니다.
새 장소로 옮긴 후 레포(repo)를 끌어내렸을 때 이런 일이 있었습니다.해결책은 이 오류를 나타내는 각 프로젝트를 언로드한 후 새로고침하는 것이었습니다.
나는 몇 가지 다른 방법을 시도해 보았지만 아무 소용이 없었다.또, 이 상황에서는, 설정 파일이 언어 버전6 을 사용하도록 설정되어 있기 때문에, 디폴트로 설정해도 문제는 해결되지 않습니다.
는 한줄 했습니다.<LangVersion>7.3</LangVersion> property )의 .tmproj 파일
<PropertyGroup Condition="'$(Configuration)|$(Platform)' == 'MyProject|AnyCPU'">
<DebugSymbols>true</DebugSymbols>
<OutputPath>bin\x86\Myproject\</OutputPath>
<DebugType>full</DebugType>
<PlatformTarget>AnyCPU</PlatformTarget>
<LangVersion>7.3</LangVersion>
</PropertyGroup>
그리고 이제 모든 것이 잘 작동한다.Net Framework는 사용할 C# 버전을 단독으로 선택할 수 있어야 합니다.
언급URL : https://stackoverflow.com/questions/32380064/cs1617-invalid-option-6-for-langversion-must-be-iso-1-iso-2-3-4-5-or-de
'programing' 카테고리의 다른 글
| Bash 문자열 차이 (0) | 2023.04.24 |
|---|---|
| 튜플 리스트에서 n번째 요소를 추출하는 방법 (0) | 2023.04.24 |
| 최신 Azure SDK를 사용하여 Blob 상에서 공유 액세스시그니처를 취득하는 방법NET API v12? (0) | 2023.04.24 |
| SQL Server에 좌표(Google 지도의 경도/위도)를 저장하는 가장 좋은 방법은 무엇입니까? (0) | 2023.04.24 |
| Eclipse 및 Windows의 새로운 라인 (0) | 2023.04.24 |
