Visual Studio 2013에서 C # 6.0 기능을 활성화하는 방법은 무엇입니까?


201

C # 6.0에 도입 된 최신 기능을 살펴 보았고 방금 자동 속성 초기화 프로그램의 예를 보았습니다.

class NewSample
{
    public Guid Id { get; } = Guid.NewGuid();
}

그러나 내 IDE는 구문을 인식하지 못했습니다.

Visual Studio 2013에서 C # 6.0을 사용하도록 설정하는 방법이 궁금합니다. 사용중인 대상 프레임 워크는 4.5.1입니다.


7
2013 년에 가능하다고는 생각하지 않습니다. 대신 VS 14 CTP 또는 VS 2015 미리보기를 살펴보십시오.
Jeroen Vannevel

글쎄, 당신은 VS 2013의 일부가 아닌 최신 컴파일러가 필요할 것이므로 가능하지 않다고 생각합니다.
Rufus L

2
글쎄, 난 그냥 MS가 업데이트를 릴리스하는지 여부를 찾고
있어요

1
@PauloMorgado "그 버전이 오래되었다"는 의미는 무엇입니까? 4.5.1, VS2013 또는 VS2014CTP?
ProfK

2
이 질문에 대한 답변을 @Deef
Chris Marisic로

답변:


64

더 이상 사용되지 않는 시험판 소프트웨어에 대한 정보 :

에 따르면 그냥 설치 및 Visual Studio 2013 갈 것 :

실제로이 릴리스에서 C # 6.0 컴파일러를 설치하면 Visual Studio 2013 확장을 설치하는 것 외에 MSBuild 대상 파일이 업데이트됩니다.

https://github.com/dotnet/roslyn 에서 파일을 가져 오면 바로 사용할 수 있습니다 .

더 이상 Visual Studio 2013 패키지를 업데이트하지 않기 때문에 구식 버전의 사양을 구현해야합니다 .

Visual Studio 2013 위에 설치되는 4 월의 최종 사용자 미리보기를 사용해 볼 수도 있습니다 (참고 :이 VS 2013 미리보기는 최신 버전이 아니며 더 이상 업데이트되지 않습니다)

따라서 최신 버전을 사용하려면 Visual Studio 2015 를 다운로드해야합니다 .


7
불행히도, vs 2013의 최종 사용자 미리보기가 마감되었습니다 :(
Hassaan

4
VS 2013을 사용하여 C # 6으로 작성하는 지원되는 방법이 있는지 확인하십시오. VS 2015를 사용해야합니까?
vorou

2
맞아요. @vorou ​​VS 2013에 대한 최신 미리보기 버전이 없습니다.
Patrick Hofman

5
실제로, 이것은 방법입니다 (내 답변 참조). 그러나 최종 릴리스 전에 몇 달 전에 할 수있는 것과 다릅니다.
David De Sloovere

1
이 주제 또는 다른 유사한 주제의 해결책 중 어느 것도 도움이되지 않았습니다. 그래서 유일한 해결 방법은 VS 2015로 옮기는 것입니다.
Yar

177

VS2013에서는 새로운 컴파일러를 너겟 패키지 로 프로젝트에 설치할 수 있습니다 . 그렇게하면 VS2015 또는 업데이트 된 빌드 서버가 필요하지 않습니다.

https://www.nuget.org/packages/Microsoft.Net.Compilers/

Install-Package Microsoft.Net.Compilers

패키지를 사용하면 C # 6.0 코드 / 구문을 사용 / 빌드 할 수 있습니다. VS2013은 기본적으로 새로운 C # 6.0 구문을 인식하지 못 하므로 코드 편집기 창에 오류가 표시되지만 정상적으로 빌드 됩니다.

Resharper를 사용하면 C # 6 기능에 구불 구불 한 선이 표시되지만 전구는 '이 프로젝트에 C # 6.0 지원 사용'(.DotSettings에 저장 됨) 옵션을 제공합니다.

@ stimpy77에서 언급했듯이 MVC Razor보기 를 지원 하려면 추가 패키지 가 필요 합니다 (주석을 읽지 않는 사람들을 위해)

Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

완전한 C # 6.0 지원을 원하면 VS2015를 설치해야합니다.


8
기본 생성자는 실제로 최종 릴리스에서 제거되었습니다. 그것이 그들이 작동하지 않는 이유입니다.
Mark A. Donohoe

8
MVC5 프로젝트의 Razor에서 C # 6을 사용하려는 사람은 별도의 NuGet 패키지처럼 보이고 VS2015를 사용하는 경우에도 필요합니다. stackoverflow.com/a/30832849/11398 참조
존 데이비스

2
그것은 작동하지만 (컴파일 할 수있는 것처럼) VS2013은 여전히 ​​오류를 표시합니다 : stackoverflow.com/questions/35796001/…
mnwsmit

2
그는 그가. 이것은 시원했다. 컴파일러는 미리 오류를 표시하지만 실제로 컴파일하면 성공적으로 컴파일됩니다. 주말 아침에 시작하는 것이 얼마나 좋은지!
RBT

1
잘 작성되지만 코드 편집기 창에 오류가 표시됩니다. 다시 지적해야 할 필요성을 느꼈습니다. 좋은 대답입니다!
meJustAndrew

5

여기에 많은 답변이 Roslyn (오픈 소스 .NET C # 및 VB 컴파일러)이 .NET 4.6으로 이동하기 전에 작성되었습니다 . 따라서 프로젝트가 4.5.2와 같이 (상속되고 변경할 수 없음) 대상을 지정하면 도움이되지 않습니다.

그러나 https://www.nuget.org/packages/Microsoft.Net.Compilers 에서 이전 버전의 Roslyn가져와 최신 버전 대신 설치할 수 있습니다. 나는 1.3.2를 사용했다. .NET 4.5에서 실행되는 마지막 버전 인 2.0.1을 시도했지만 컴파일 할 수 없었습니다 *. VS 2013의 패키지 관리자 콘솔에서이를 실행하십시오.

PM> Install-Package Microsoft.Net.Compilers -Version 1.3.2

그런 다음 Visual Studio를 다시 시작하십시오. 처음에는 몇 가지 문제가있었습니다. C # 버전을 다시 기본값 으로 설정해야합니다 (C # 6.0은 버전 목록에 나타나지 않지만 기본값으로 설정된 것 같습니다). 정리, 저장, VS를 다시 시작하고 다시 컴파일하십시오.

흥미롭게도 코드에 사용 된 C # 6.0 기능 (처음으로 C # 6.0을 원하는 이유)으로 인해 IntelliSense 오류가 없었습니다.

* 버전 2.0.1에서 오류가 발생 함 "Microsoft.CodeAnalysis.BuildTasks.Csc 작업을 어셈블리 Microsoft.Build.Tasks.CodeAnalysis.dll에서로드 할 수 없습니다. 파일 또는 어셈블리를로드 할 수 없습니다 'Microsoft.Build.Utilities.Core, Version = 14.0.0.0, Culture = neutral, PublicKeyToken = b03f5f7f11d50a3a '또는 해당 종속성 중 하나가 시스템에서 지정된 파일을 찾을 수 없음 선언이 올바른지, 어셈블리 및 모든 종속성이 사용 가능한지, 태스크에 Microsoft.Build.Framework.ITask를 구현하는 공용 클래스

업데이트이 답변을 게시 한 후 주목할 점은 디버그 중 코드를 변경하면 ( "편집 및 계속") C # 6.0 코드가 갑자기 되돌릴 것 같은 오류로 갑자기 표시된다는 것입니다. C # 6.0 이전 환경. 디버그 세션을 다시 시작해야합니다. 특히 웹 애플리케이션에서 매우 성가시다.


@RichBianco 대단합니다-피드백과 투표에 감사드립니다. 개인적으로 v2.0.1이 작동하지 않는 이유를 이해할 수 없습니다. 내가보고 한 오류를 제거하는 것처럼 누군가가 이것에 대한 단서를 가지고 있다면 수정 사항을 게시하십시오.
SteveCinq

4

VS 2015 사용자빌드 시간이 다음과 같이 늘어날 것이라고 언급 할 가치 가 있습니다 .

Install-Package Microsoft.Net.Compilers

VS 2015를 사용하고 있고 프로젝트에서이 패키지를 유지 해야하는 사용자는 빌드 시간 증가를 해결할 수 있습니다 .

파일을 편집 packages\Microsoft.Net.Compilers.1.2.2\build\Microsoft.Net.Compilers.props하고 정리하십시오. 파일은 다음과 같아야합니다.

<Project DefaultTargets="Build" 
         xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
</Project>

그렇게하면 Microsoft.Net.Compilers패키지 를 추가하기 전에 프로젝트를 강제로 빌드 합니다


2

Resharper가있는 경우 Visual Studio 2013에서 전체 C # 6.0 기능을 사용할 수 있습니다.
Resharper Build와 voilá를 활성화해야합니다! Resharper 옵션-> 빌드-Resharper 빌드를 활성화하고 "MSBuild.exe 버전 사용"에서 "최신 설치"를 선택하십시오.

이 방법으로 Resharper는 C # 6.0 프로젝트를 빌드하고 C # 6.0 코드에 유효하지 않은 밑줄을 표시하지 않습니다.

Visual Studio 2015를 사용하고 있지만 이것을 사용하고 있습니다.

  1. Resharper의 단위 테스트가 어떤 이유로 Visual Studio 2015에서 작동하지 않습니다.
  2. VS 2015는 VS 2013보다 훨씬 많은 메모리를 사용합니다.

나는이 문제에 대한 해결책을 지금 찾고 있었기 때문에 이것을 여기에두고 있으며 아마도 다른 누군가를 도울 것입니다.


-1

약간의 오해가있는 것 같습니다. 그래서, 대신 여기 VS2013 패치를하려고 노력입니다 및 Microsoft 사람의 대답 : https://social.msdn.microsoft.com/Forums/vstudio/en-US/49ba9a67-d26a-4b21-80ef-caeb081b878e/will-c- 2013 년 대 60 년까지 지원 될 것인가? 포럼 = roslyn

따라서 읽어보고 VS2015를 설치하십시오.


1
이 링크는 ms 로그인 후에도 '권한 없음'을 제공합니다. 물론 VS2015 이상을 설치하면 일부 설정에서 £ XXX, 000의 비용이 듭니다.
크리스 F 캐롤
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.