IT이야기

asp.net 애플리케이션에서 C#7 활성화

cyworld 2021. 3. 24. 21:25
반응형

asp.net 애플리케이션에서 C # 7 활성화


방금 Visual Studio 2017에서 이전 솔루션 작업을 시작했습니다. 이전 IDE에서 솔루션을 여는 것만으로도 원활하게 작동했습니다. 이제 C # 응용 프로그램 프로젝트는 기본적으로 C # 7.0 컴파일러로 설정됩니다. 해당 프로젝트의 속성 페이지 (컴파일 / 고급)를 통해 컴파일러의 대상 언어 버전을 쉽게 선택할 수 있으며 기본값은 최신 버전입니다.

하지만 asp.net 웹 프로젝트 에서 C # 7.0을 활성화하는 방법을 찾을 수 없습니다 . 다음과 같은 진술을 작성하면

if (int.TryParse("1", out int myInt)) { ... }

IDE에서 언어 버전 7 이상을 사용해야한다고 경고합니다.

이 주제에 대한 내 연구에 따르면 최신 Roslyn 버전을 대상으로하기 위해 web.config 파일의 system.codedom 컴파일러 영역에서 특정 C # 버전을 대상으로해야합니다.

내가 지금 가지고있는 것은 :

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs"
        type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/>

C # 6을 대상으로하는 것은 무엇입니까? Nuget이 포함 된 최신 Roslyn을 이미 다운로드 한 경우 C # 7에 대한 올바른 설정은 무엇입니까?

업데이트 다음은 웹 프로젝트에 사용할 수있는 컴파일 옵션 의 스크린 샷입니다 (이탈리아어 VS2017이지만 이해하기 쉬울 것임). 대상 C # 버전을 선택할 수 없습니다.

컴파일 옵션


웹 사이트의 NuGet 창에서 :

  1. 제거 Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  2. 다시 설치
  3. 에서는 web.config아래 : system.codedom > compilers > compiler변경 compilerOptions= "/ langversion : 6 ~ 7

기본 언어 설정으로 컴파일 할 수 있지만 C # 7 옵션으로는 컴파일 할 수 없습니다. 여기에 이미지 설명 입력

그러나 아래 설정은 컴파일 시간 오류를 제공합니다.

여기에 이미지 설명 입력

언어 버전 설정을 기본값으로 유지할 수 있습니다.

Roslyn으로 실험하고 Visual 2017 기본 컴파일러 빌드를 사용하지 않는 경우 몇 가지 추가 변경이 필요할 수 있습니다.

프로젝트 이름을 선택하고 >> 속성 창 >> 빌드를 마우스 오른쪽 버튼으로 클릭 한 다음 "조건부 컴파일 기호"텍스트 상자에 아래 두 가지 옵션을 추가합니다. __DEMO__,__DEMO_EXPERIMENTAL__

여기에 이미지 설명 입력

최신 정보

C # 7.0을 사용하려면 2.0+ 버전의 Microsoft.Net.Compilers를 사용해야합니다.

여기에 이미지 설명 입력

최신 버전의 Microsoft.Net.Compilers (2.0+) 설치 한 후 언어 버전을 C # 7로 선택할 수 있습니다.

따라서 가장 좋은 해결책은 최신 버전의 Microsoft.Net.Compilers (2.0+)를 설치하는 것입니다.


Microsoft.CodeDom.Providers.DotNetCompilerPlatform버전 2.0.0 을 설치하려고하고 프로젝트가 4.6 이전 버전의 .net을 대상으로하는 경우 자동으로 langversion 6까지만 지원하는 이전 버전의 roslyn을 사용합니다. 이는 다음을 포함한 최신 버전의 roslyn 때문입니다. csharp-7을 지원하는 첫 번째 버전은 실행하려면 .net-4.6 이상이 필요합니다. 프로젝트가 이전 버전의 .net을 대상으로하는 경우 다음과 같은 오류 메시지가 표시됩니다.

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

  1. 프로젝트가 .net-4.6 이상을 대상으로하고 있는지 확인하십시오. 필요한 경우 대상을 변경하십시오.
  2. 프로젝트에서 여전히를 사용하는 경우 packages.config제거하고 다시 설치 Microsoft.CodeDom.Providers.DotNetCompilerPlatform하여 nuget 패키지의 .net-4.6 변형을 가리 키도록 프로젝트 파일을 업데이트해야합니다. 을 사용하는 경우 <PackageReference/>모든 설정이 완료된 것입니다 (하지만 web.configsystem.codedom섹션 을 수동으로 구성해야합니다 ).

C # 7.x 지원의 경우 프로젝트의 빌드 구성 언어 버전을 C # 최신 부 버전 (최신)으로 설정합니다.

구성 언어 버전 빌드

.NET 컴파일러 플랫폼 용 CodeDOM 공급자 ( "Roslyn") (예 : Microsoft.CodeDom.Providers.DotNetCompilerPlatform nuget 패키지)를 사용하는 경우 asp.net의 web.config에서 compilerOptions = "/ langversion : latest"를 설정합니다.

<system.codedom>
   <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
        warningLevel="4" compilerOptions="/langversion:latest /nowarn:1659;1699;1701"/>
   </compilers>
</system.codedom>

더 많은 정보를 위해서:


다른 사용자 지정 프로젝트 B를 참조하는 사용자 지정 프로젝트 A를 참조하고있었습니다. 방금 A에서 B까지 참조를 읽었고 작동하는 것처럼 보였습니다.

참조 URL : https://stackoverflow.com/questions/42744689/enabling-c-sharp-7-in-a-asp-net-application

반응형