배경
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 기능으로 제한하는 방법은 무엇입니까?
답변
Properties => Build tab => Advanced button => Language Version
선호하는 버전 으로 이동하여 설정하여 각 프로젝트의 언어 기능을 별도로 설정할 수 있습니다.
여전히 새로운 “C # 6.0”.Net 컴파일러 플랫폼 (코드 명 Roslyn)을 사용한다는 것을 알고 있어야합니다. 그러나 해당 컴파일러는 이전 컴파일러의 동작을 모방 하고 특정 언어 버전에서만 사용할 수있는 기능으로 제한합니다.
사용 가능한 솔루션 범위 설정이 있다고 생각하지 않습니다.
답변
아래 추가 .sln.DotSettings
솔루션 수준에서 사용하지 않도록 설정해야
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
또는 .sln.DotSettings
파일 이없는 경우 :
-
솔루션 파일의 이름이 Apple.sln이면 Apple.sln.DotSettings라는 파일 옆에 파일을 만듭니다.
-
다음 내용을 알려주세요.
<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>
-
솔루션을 닫았다가 다시 열면 Resharper는 C # 5에 대해서만 경고합니다.
-
C # 6 기능을 사용하기 시작하면이를 제거하는 것을 잊지 마십시오! 🙂
답변
내가 작성한 이 도구 는 설정해야 할 프로젝트가 많은 경우 도움이 될 수 있습니다 LangVersion
.
답변
당신은 모든의 언어 기능을 설정할 수 있습니다 solutions/csproj
와 MSBuildUserExtensionsPath
.
의 값을 검색하면 $(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>