Background
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.
We have no intention to use C# 6 within this particular solution (as much as I'd like to).
Problem
Visual Studio and ReSharper suggest helpful C# 6 language constructs that render the solution inoperable in earlier versions of Visual Studio without C#6 support.
I've disabled the ReSharper C#6 support but I can't seem to disable / limit C# features across the whole solution.
Question
How do I limit C# to C#5 capabilities within a solution or within Visual Studio 2015?
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 levelOr 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:
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! :)
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.
You can set the language feature for all the
solutions/csproj
with theMSBuildUserExtensionsPath
.Search the value of the
$(MSBuildUserExtensionsPath)
, it should be something likeC:\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 :