Visual Studio 2015에서 작동하지 않는 C # 6.0 기능 # 6.0으로 Visual Studio 2015를

C # 6.0으로 Visual Studio 2015를 테스트하고 있지만 언어 기능이 작동하지 않습니다. MVC 웹 응용 프로그램에서 다음 코드는 컴파일됩니다.

if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
    // More logic here...
}

그러나 디버그 및 IIS Express를 통해 응용 프로그램을 실행하면 다음 오류가 발생합니다.

CS1525 : 유효하지 않은 표현 용어 ‘.’

이 기능들을 어떻게 활성화합니까?



답변

이것은 MVC 5 (5.2.3에서 테스트 됨)에서 작동하므로 roslyn 코드 dom Nuget 패키지를 추가하면됩니다.

.NET 컴파일러 용 CodeDOM 공급자 …

새로운 .NET 컴파일러 플랫폼 ( “Roslyn”) 컴파일러를 서비스 API로 사용하는 대체 CodeDOM 제공자. 이는 CodeDOM (예 : ASP.NET 런타임 컴파일)을 사용하는 시스템에서 새로운 언어 기능을 지원할뿐만 아니라 이러한 시스템의 컴파일 성능을 향상시킵니다.

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/


답변

글쎄, MVC5가 있고 최근에 VS 2015를 설치했습니다.

CodeDOM 공급자 패키지를 설치했지만 도움이되지는 않지만 … 그 후에 실현 된 패키지는 프레임 워크 4.5 만 지원하지만 테스트 중에 대상 프레임 워크는 4.6으로 설정되었지만 4.5와 함께 작동합니다 …

따라서 목표 프레임 워크에도주의를 기울이십시오. 4.5가있는 경우 Microsoft.CodeDom.Providers.DotNetCompilerPlatform 패키지를 설치하십시오. 그러나 대상으로 4.5.1-4.6이 있으면 web.config 섹션에서 변경해야합니다.

  <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=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

들어 C #을 , 단지 변경 유형 에 :

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


답변

Visual Studio 2015에서도 이와 동일한 문제가 발생했습니다. 여기에 또 다른 대답은 내가 사용한 솔루션을 암시했지만 수정 사항을 잘못 지정하고 설명을 한 적이 없습니다.

Visual Studio 메뉴에서 Project를 선택 하면이 문제가 발생 하면 하위 항목 Enable C # 6 / VB 14가 표시 됩니다. 이 메뉴 하위 항목을 선택하십시오. Nuget에서 올바른 패키지를 다운로드하여 설치합니다. 그런 다음 Visual Studio를 다시 시작하고 솔루션을 다시로드하십시오.

이것이 프로젝트 속성> 빌드> 고급> 언어 버전 선택을 C # 6으로 수정하는지 확인할 수 없으므로 메뉴에서 C # 6을 활성화 한 후에도 확인하십시오.


답변

프로젝트 속성을 확인하고 빌드하고 고급으로 이동 한 다음 기본적으로 C # 6.0이 없는지 확인하십시오.

현재 MVC5 및 C # 6.0을 완벽하게 지원하며 놀랍도록 잘 작동합니다!


답변

최신 설치에 대한 조언을 따르는 것을 포함 하여 마지막으로 모든 오류를 없애기 위해 루트Microsoft.CodeDom.Providers.DotNetCompilerPlatform설정해야했습니다 . Web.config system.codedomVisual Studio 2015

  <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>

이제 다시 시작 Visual Studio하면됩니다.


답변

Visual Studio 2015는 Enable C#6 / VB 14ASP.NET 웹 사이트 / 웹 응용 프로그램이 선택된 프로젝트 메뉴 에도 표시됩니다 .

이것은 실제로 프로젝트에 설치 Microsoft.CodeDom.Providers.DotNetCompilerPlatform하고 Microsoft.Net.Compilers패키지하고 web.config 파일에 적절한 태그를 추가합니다.

Visual Studio 2015-CS6 스 니프 사용


답변

<compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /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.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />