背景
我们在VS 2015中开发了一个项目,启用了C#6,偶尔需要由使用VS 2013而没有C#6的开发人员打开 .
我们无意在这个特定的解决方案中使用C#6(尽我所能) .
问题
Visual Studio和ReSharper建议使用有用的C#6语言结构,这些结构使得解决方案在没有C#6支持的早期版本的Visual Studio中无法运行 .
我已经disabled the ReSharper C#6 support但我似乎无法在整个解决方案中禁用/限制C#功能 .
问题
如何在解决方案或Visual Studio 2015中限制C#到C#5的功能?
6 回答
您可以单独设置每个项目的语言功能,方法是转到
Properties => Build tab => Advanced button => Language Version
并设置首选版本 .您应该意识到它仍将使用新的"C# 6.0" .Net编译器平台(代号为Roslyn) . 但是,该编译器将模仿旧编译器的行为,并将限制您仅在该特定语言版本上可用的功能 .
我认为没有可用的解决方案范围设置 .
在
.sln.DotSettings
下面添加应该在解决方案级别禁用它或者,如果您没有
.sln.DotSettings
文件:如果您的解决方案文件名为Apple.sln,请在其旁边创建一个名为Apple.sln.DotSettings的文件 .
给它以下内容:
关闭并重新打开解决方案,Resharper应该只警告你关于C#5的事情 .
当您最终开始使用C#6功能时,不要忘记删除它! :)
您可以使用
MSBuildUserExtensionsPath
为所有solutions/csproj
设置语言功能 .搜索
$(MSBuildUserExtensionsPath)
的值,它应该像C:\Users\$(User)\AppData\Local\Microsoft\MSBuild
然后使用以下命令编辑文件
$(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore
中的文件Force.LangVersion.ImportBefore.props
:如果您有许多项目需要设置
LangVersion
,我写的这个tool可能会对您有所帮助 .上面已经写了一些步骤,只是添加了我的VS2015的截图:
项目属性>> Build >> Advanced >>语言版本
我把它设置为C#5.0 .
右键单击Project Explorer中的Project,然后选择Properties .
打开“属性”选项卡后,选择“生成”,然后单击右下角的“高级”按钮 .
有一个名为语言版本的下拉框 . 将选择更改为“C#5.0”