Visual Studio 2015에서 C # 6 지원을 비활성화하려면 어떻게합니까?


136

배경

C # 6을 사용하는 VS 2015에서 개발중인 프로젝트가 있으며 때로는 C # 6없이 VS 2013을 사용하는 개발자가 열어야합니다.

우리는이 특정 솔루션 내에서 C # 6을 사용하려는 의도가 없습니다 (원하는만큼).

문제

Visual Studio 및 ReSharper는 C # 6 지원없이 이전 버전의 Visual Studio에서 솔루션을 사용할 수 없게하는 유용한 C # 6 언어 구성을 제안합니다.

나는 한 ReSharper에서 C # 6 지원을 비활성화 하지만 전체 솔루션을 통해 기능을 비활성화 / 제한 C #을 수없는 것.

질문

솔루션 내에서 또는 Visual Studio 2015 내에서 C #을 C # 5 기능으로 제한하는 방법은 무엇입니까?


17
빌드 탭, 고급 버튼, 언어 버전 설정.
Hans Passant

@HansPassant 감사합니다! 바로 그거야. 답안 양식으로 작성 하겠지만 여기에 답을 올리면 답을 올바른 것으로 표시해야합니다.
SeanKilleen

정확히 내 문제 야! 우리의 솔루션을 제외하고는 2013 년이지만 VS2015를 계속 사용하고 싶습니다.
anish

@entre 반드시 필요한 것은 아닙니다; 항상 C # 6 기능을 사용할 수는 없습니다 . 그러나 Visual Studio와 resharper는 이러한 기능을 활용하는 리팩토링을 제안합니다. 빌드 머신이 C # 6을 지원하는 한 문제가되지 않습니다.
SeanKilleen

나는 c # 6을 사용하고 싶지 않지만 ... 나는 여전히 그 제안을 받고있다.. 나는 resharper를 위해 그것들을 제거했다. 프레임 워크는 4.5
harishr

답변:


136

Properties => Build tab => Advanced button => Language Version선호하는 버전 으로 이동하여 설정하여 각 프로젝트의 언어 기능을 별도로 설정할 수 있습니다.

여전히 새로운 "C # 6.0".Net 컴파일러 플랫폼 (코드 명 Roslyn)을 사용한다는 것을 알고 있어야합니다. 그러나 해당 컴파일러는 이전 컴파일러의 동작을 모방 하고 특정 언어 버전에서만 사용할 수있는 기능으로 제한합니다.


사용 가능한 솔루션 범위 설정이 있다고 생각하지 않습니다.


1
VB.NET에 동등한 설정이 있는지 알고 있습니까?
Bradley Uffner

2
오늘 일찍 답변을 받았습니다. stackoverflow.com/questions/31454902/…
Bradley Uffner

1
프로젝트 속성을 변경 한 후 내 Studio는 편집기에서 C # 6.0 코드를 표시합니다. 그러나 오류로 처리하지 않습니다 (성공적으로 빌드 됨).
유진 그리 아 노프

2
프로젝트가 많은 경우 csproj를 직접 편집하는 것이 좋습니다. 첫 번째 PropertyGroup요소 안에 다음을 추가하십시오 .<LangVersion>5</LangVersion>
mhand

VS2017에서 C # 7 지원을 비활성화하는 것과 동일한 방식으로 작동 <LangVersion>6</LangVersion>합니다. 대신 사용하십시오.
Paul Suart 2016 년

49

아래 추가 .sln.DotSettings솔루션 수준에서 사용하지 않도록 설정해야

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>

또는 .sln.DotSettings파일 이없는 경우 :

  1. 솔루션 파일의 이름이 Apple.sln이면 Apple.sln.DotSettings라는 파일 옆에 파일을 만듭니다.

  2. 다음 내용을 알려주세요.

    <wpf:ResourceDictionary xml:space="preserve" xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" xmlns:s="clr-namespace:System;assembly=mscorlib" xmlns:ss="urn:shemas-jetbrains-com:settings-storage-xaml" xmlns:wpf="http://schemas.microsoft.com/winfx/2006/xaml/presentation">
        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
    </wpf:ResourceDictionary>
    
  3. 솔루션을 닫았다가 다시 열면 Resharper는 C # 5에 대해서만 경고합니다.

  4. C # 6 기능을 사용하기 시작하면이를 제거하는 것을 잊지 마십시오! :)


1
이것은 솔루션 내의 모든 프로젝트에 적용되는 답변으로 표시되어야하며 파일을 체크인 할 수 있습니다.
twoleggedhorse

8
@twoleggedhorse 실제로이 답변은 OP가 이미 비활성화 한 Resharper에만 관련이 있으므로 질문에 대답조차하지 않습니다.
i3arnon

1
또한 답변으로 표시해야한다는 데 동의합니다. OP는이 답변 만 제공하는 솔루션 전체 설정에 대해 질문했습니다.
sam-xor

1
어쨌든 이것이 Visual Studio가 코드 개선에 대한 Microsoft의 자체 권장 사항을 표시하는 것을 방해하지는 않습니다 (실제로 질문하지 않았습니다). 이 답변은 Visual Studio가 아닌 ReSharper에서 작동합니다 (우리 모두가 ReSharper를 사용하는 것은 아닙니다).
Stephen Reindl

11

내가 작성한 이 도구 는 설정해야 할 프로젝트가 많은 경우 도움이 될 수 있습니다 LangVersion.


10

당신은 모든의 언어 기능을 설정할 수 있습니다 solutions/csprojMSBuildUserExtensionsPath.

의 값을 검색하면 $(MSBuildUserExtensionsPath)다음과 같아야합니다.C:\Users\$(User)\AppData\Local\Microsoft\MSBuild

그런 다음 Force.LangVersion.ImportBefore.props폴더를 $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore사용 하여 파일 을 편집하십시오 .

<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <PropertyGroup>
    <LangVersion>5</LangVersion>
  </PropertyGroup>
</Project>

9

단계는 이미 VS2015의 스크린 샷을 추가하여 이미 작성되었습니다.

프로젝트 속성 >> 빌드 >> 고급 >> 언어 버전

여기에 이미지 설명을 입력하십시오

C # 5.0으로 설정했습니다.


8

프로젝트 탐색기에서 프로젝트를 마우스 오른쪽 버튼으로 클릭하고 속성을 선택하십시오.

속성 탭이 열리면 빌드를 선택하고 오른쪽 하단의 고급 버튼을 클릭하십시오.

언어 버전이라는 드롭 다운 상자가 있습니다. 선택을 "C # 5.0"으로 변경

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.