如何在Visual Studio 2015中禁用C#6支持?

Sea*_*een 136 c# visual-studio c#-5.0 c#-6.0 visual-studio-2015

背景

我们在VS 2015中开发了一个项目,启用了C#6,偶尔需要由使用VS 2013而没有C#6的开发人员打开.

我们无意在这个特定的解决方案中使用C#6(尽我所能).

问题

Visual Studio和ReSharper建议使用有用的C#6语言结构,这些结构使得解决方案在没有C#6支持的早期版本的Visual Studio中无法运行.

我已经禁用了ReSharper C#6支持,但我似乎无法在整个解决方案中禁用/限制C#功能.

如何在解决方案或Visual Studio 2015中限制C#到C#5的功能?

i3a*_*non 135

您可以通过转到Properties => Build tab => Advanced button => Language Version并设置首选版本来单独为每个项目设置语言功能.

您应该意识到它仍将使用新的"C#6.0".Net编译器平台(代号为Roslyn).但是,该编译器将模仿旧编译器的行为,并将限制您仅在该特定语言版本上可用的功能.


我认为没有可用的解决方案范围设置.

  • 我今天早些时候得到了答案./sf/ask/2201843171/ (2认同)
  • 如果你有很多项目,我建议你直接编辑csproj.在第一个`PropertyGroup`元素中添加以下内容:`<LangVersion> 5 </ LangVersion>` (2认同)

har*_*shr 49

下面添加.sln.DotSettings应该在解决方案级别禁用它

<s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
Run Code Online (Sandbox Code Playgroud)

或者,如果您没有.sln.DotSettings文件:

  1. 如果您的解决方案文件名为Apple.sln,请在其旁边创建一个名为Apple.sln.DotSettings的文件.

  2. 给它以下内容:

    <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>
    
    Run Code Online (Sandbox Code Playgroud)
  3. 关闭并重新打开解决方案,Resharper应该只警告你关于C#5的事情.

  4. 当您最终开始使用C#6功能时,不要忘记删除它!:)

  • @twoleggedhorse实际上这个答案只与OP已经禁用的Resharper有关,因此它甚至没有回答这个问题. (8认同)

khe*_*ang 11

如果您有许多需要设置的项目,我写的这个工具可能会对您有所帮助LangVersion.


小智 10

您可以为所有的语言功能solutions/csprojMSBuildUserExtensionsPath.

搜索的值$(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>
Run Code Online (Sandbox Code Playgroud)


Rag*_*hav 9

上面已经写了一些步骤,只是添加了我的VS2015的截图:

项目属性>> Build >> Advanced >>语言版本

在此输入图像描述

我把它设置为C#5.0.


Nic*_*now 8

右键单击Project Explorer中的Project,然后选择Properties.

打开"属性"选项卡后,选择"生成",然后单击右下角的"高级"按钮.

有一个名为语言版本的下拉框.将选择更改为"C#5.0"