We have a project that we\'re developing in VS 2015 with C#6 enabled that occasionally needs to be opened by developers using VS 2013 without C#6.
You can set the language feature for all the solutions/csproj
with the MSBuildUserExtensionsPath
.
Search the value of the $(MSBuildUserExtensionsPath)
, it should be something like C:\Users\$(User)\AppData\Local\Microsoft\MSBuild
Then edit the file Force.LangVersion.ImportBefore.props
in the folder $(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore
with :
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<LangVersion>5</LangVersion>
</PropertyGroup>
</Project>
This tool I wrote might help you if you have many projects that you need to set LangVersion
for.
You can set the language feature for each project separately by going to Properties => Build tab => Advanced button => Language Version
and set your preferred version.
You should realize that it will still use the new "C# 6.0" .Net Compiler Platform (codenamed Roslyn). However, that compiler will imitate the behavior of older compilers and will limit you to features only available on that specific language version.
I don't think that there's a solution-wide setting available.
Right click on Project in Project Explorer and select Properties.
When the Properties tab opens select Build and the click the Advance button in bottom right.
There is drop-down box called Language Version. Change the select to "C# 5.0"
Steps have already been written above, just adding a screenshot further of my VS2015:
Properties of project >> Build >> Advanced >> Language version
I set that to C# 5.0.
add below in .sln.DotSettings
should disable it on solution level
<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
Or if you don't have a .sln.DotSettings
file:
If your solution file is called Apple.sln, create a file beside it called Apple.sln.DotSettings.
Give it the following contents:
<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>
Close and reopen the solution, Resharper should only warn you about C#5 things.
Don't forget to remove this when you eventually start using C#6 features! :)