programing

asp.net 응용 프로그램에서 c#7 사용

jooyons 2023. 6. 24. 09:01
반응형

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+를 사용해야 한다고 경고합니다.

이 주제에 대한 제 연구는 최신 Roslin 버전을 대상으로 하기 위해 web.config 파일의 system.codom 컴파일러 영역에 있는 특정 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와 함께 최신 Roslin을 다운로드했다면 c#7에 대한 올바른 설정은 무엇입니까?

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

Compile options

웹 사이트의 NuGet 창에서 다음을 수행합니다.

  1. 제거Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  2. 다시 설치
  3. web.config아래:system.codedom > compilers > compiler,바꾸다compilerOptions="/6000 버전: 6-7

기본 언어 설정으로 컴파일할 수 있지만 C#7 옵션으로는 컴파일할 수 없습니다. enter image description here

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

enter image description here

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

만약 당신이 Visual 2017 기본 컴파일러 빌드를 사용하지 않고 Roslin으로 실험한다면, 당신은 몇 가지 더 변경해야 할 것입니다.

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

enter image description here

갱신하다

C# 7.0을 사용하려면 Microsoft 2.0 이상 버전을 사용해야 합니다.넷 컴파일러

enter image description here

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

따라서 가장 좋은 해결책은 최신 버전의 Microsoft를 설치하는 것입니다.Net. 컴파일러(2.0 이상).

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

CS1617 /lang 버전에 대한 'latest' 옵션이 잘못되었습니다. ISO-1, ISO-2, Default 또는 1 - 6 범위의 정수여야 합니다.

  1. 프로젝트가 최소한 .net-4.6을 대상으로 하는지 확인합니다.필요한 경우 대상을 변경합니다.
  2. 프로젝트에서 여전히 사용하는 경우packages.config 을(를) 설치해야 합니다.Microsoft.CodeDom.Providers.DotNetCompilerPlatformnuget 패키지의 .net-4.6 변형을 가리키도록 프로젝트 파일을 업데이트합니다.사중인경우를 .<PackageReference/>.web.configsystem.codedom섹션)을 클릭합니다.

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

빌드 구성 언어 버전

.NET 컴파일러 플랫폼용 CodeDOM 공급자("Roslin")(예: 마이크로소프트)를 사용하는 경우.코드 돔.공급자.dotNetCompilerPlatform nuget package)는 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>

자세한 정보:

프로젝트 폴더의 파일을 바꿔야 합니다.

/Bin/roslyn 

NuGet 패키지 폴더의 파일과 함께

/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform.3.6.0/tools/Roslyn472

프로젝트 폴더의 csv.exe가 새 버전의 nuget을 설치하는 동안 교체되지 않았습니다.파일을 교체한 후에는 매우 잘 작동합니다.

그리고 변화하는 것을 잊지 마세요.프로젝트 속성의 최신 버전으로 순 버전입니다.

저는 다른 사용자 정의 프로젝트 B를 참조하는 사용자 정의 프로젝트 A를 참조하고 있었습니다.저는 방금 A에서 B로 참조를 추가했고 (현재로서는) 효과가 있는 것처럼 보였습니다.

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

반응형