웹 사이트 프로젝트 유형과 함께 C# 6을 사용하는 방법은 무엇입니까?
기존 웹 사이트 프로젝트 유형 Visual Studio 2015를 업데이트하여 프레임워크를 4.6으로 변경했습니다.
그리고 나서 저는 제 코드에서 파일 뒤에 있는 모든 새로운 기능을 사용할 수 있기를 기대했습니다.
다음과 같은 오류가 발생합니다.
오류 CS8026: '표현식 본문 속성' 기능은 C# 5에서 사용할 수 없습니다. 언어 버전 6 이상을 사용하십시오.
또는 예:
오류 CS8026: '인터폴링된 문자열' 기능은 C# 5에서 사용할 수 없습니다. 언어 버전 6 이상을 사용하십시오.
저는 빠른 구글 체크를 했고 Scott Gu의 블로그 게시물에서 어떤 남자가 댓글을 다는 것을 발견했습니다(페이지에서 "8026" 검색).
저는 그의 솔루션을 이해할 수 없고, 솔루션을 더 잘 보여주고 싶어서 이 SO 게시물을 만들었습니다.
내 질문:
웹 사이트 유형(즉, 웹 응용 프로그램이 아닌)의 Visual Studio 2015 프로젝트에서 C#6 기능을 인식하려면 어떻게 해야 합니까?
ASP로 테스트해봤습니다.NET MVC 5(테스트 완료 5.2.3) 및 마일리지는 다른 웹 프레임워크에 따라 다를 수 있지만 Roslyn CodeDOM용 NuGet 패키지를 추가하기만 하면 됩니다.
Microsoft.CodeDom.Providers.DotNetCompilerPlatform DLL 파일을 추가해야 합니다...
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform새 코드를 사용하는 CodeDOM 공급자를 교체합니다.서비스 API로서의 NET 컴파일러 플랫폼("Roslin") 컴파일러.이것은 CodeDOM(예: ASP)을 사용하는 시스템에서 새로운 언어 기능을 지원합니다.NET 런타임 컴파일) 및 이러한 시스템의 컴파일 성능을 향상시킵니다.
...그리고 다음을 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=\"Web\" /optionInfer+" />
</compilers>
</system.codedom>
XML이 여전히 누락된 경우 직접 추가해 보십시오.
VSIDE를 통해 이를 수행하는 방법에 대해서는 Sayed Ibrahim Hashimi의 블로그 게시물도 참조하십시오.
Visual Studio 2015 업데이트 1에는 이를 단순화하기 위한 새로운 기능이 포함되어 있습니다.대상이 되는 웹 프로젝트가 하나 이상 있는 솔루션이 열려 있는 경우.NET 4.5+ 및 Project 메뉴에 DotNetCompilerPlatform NuGet 패키지가 없습니다. Enable C# 6 / VB 14 옵션이 나타납니다.
갱신하다.
VS 2017 및 2019에서는 이 기능이 빌드 -> ASP로 이동되었습니다.NET 컴파일.
@jbtule이 제안한 대로 DotNetCompiler Platform을 설치했지만 동일한 오류가 발생했습니다.
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
솔루션을 닫고, bin과 obj 폴더를 삭제한 다음, 솔루션을 열고 다시 빌드했습니다.이제 C#6 기능이 작동합니다.
ScottGu의 블로그 게시물에 대한 코멘트에서 가져온 가능한 해결책(페이지에서 "8026" 검색):
솔루션 제안 1(David Taylor)
다음 RTM 코드 돔 요소를 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=\"Web\" /optionInfer+"/>
</compilers>
</system.codedom>
그런 다음 로슬린과 마이크로소프트를 추가합니다.코드 돔.Providers .*.dll은 BIN 디렉토리에 저장됩니다.
설정하기는 쉽지만 기본 템플릿이 설정되어 있지 않은 것이 이상했습니다.VS 2015 RTM에서 새 "웹 사이트"를 생성할 때 NET 4.6.
솔루션 제안 2(Martin)
위의 David Taylor의 설명에 덧붙여, TargetFramework를 기본 v4.5.2로 사용하여 웹 앱을 만들 때 system.codom 설정이 올바른 것 같습니다.TargetFramework를 v4.6으로 변경하면 문제가 발생하는 방식으로 CSSharp에 대한 컴파일러 설정을 수정하는 것으로 나타납니다.
해결 방법은 다음과 같습니다.
- 파일/새로 만들기/ASP.NET 웹 응용 프로그램
- ASP에서 "Web API" 템플리트를 선택합니다.NET 4.5.2 템플릿
- web.config에 있는 system.codom 요소(및 해당 내용)의 복사본을 가져옵니다.
- 속성/대상 프레임워크를 사용하여 대상 프레임워크를 4.6으로 설정
- web.config의 수정된 system.codom 요소를 TargetFramework를 변경하기 전에 만든 복사본으로 바꿉니다.
- 히트
홈 페이지가 예상대로 로드되어야 합니다.
참고로 TargetFramework를 v4.6으로 변경한 직후 system.codom 내용은 다음과 같습니다(Type "Microsoft"의 사용 참고).CSSharp.CSSharpCodeProvider":
<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.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 MVC 프로젝트.
Visual Studio UI에서 C# 6을 전환할 수 있습니다.이것은 매우 쉬운 선택입니다, 먼저 시도해 볼 가치가 있습니다.
- 프로젝트를 마우스 오른쪽 단추로 클릭하고 속성을 선택합니다.
- 빌드 탭을 클릭합니다.
- 빌드 탭에 고급...맨 아래 단추를 누릅니다.
- 그러면 아래와 같이 고급 빌드 설정이 열립니다.C# 6.0을 선택합니다.
다음은 VS2017에서 웹 사이트 프로젝트를 사용한 결과입니다.
VS2019 Visual Studio 2019에서 솔루션을 찾다가 우연히 발견했습니다.
솔루션 파일에서 웹 사이트 프로젝트를 선택한 경우입니다."Build → ASP.NET 컴파일 → 최신 C# 및 VB 언어 기능을 활성화합니다."
제 웹API 프로젝트를 ZERO로 변경한 후 이 오류가 발생했습니다.DotNetCompilerPlatform nuget 패키지를 제거하고 다시 설치하여 문제를 해결했습니다.
언급URL : https://stackoverflow.com/questions/31548699/how-to-use-c-sharp-6-with-web-site-project-type
'programing' 카테고리의 다른 글
| WPF 유효성 검사 오류 감지 (0) | 2023.04.29 |
|---|---|
| IE10은 IE7 모드에서 렌더링합니다.표준 모드를 적용하는 방법은 무엇입니까? (0) | 2023.04.29 |
| 이클립스에서 내 그라들 종속성 업데이트 (0) | 2023.04.29 |
| SELECT * [열 A 제외]를 사용하여 열을 테이블 A에서 제외하시겠습니까? (0) | 2023.04.29 |
| Azure 웹 작업 및 배포 슬롯 (0) | 2023.04.29 |



