【问题标题】:How do I disable C# 6 Support in Visual Studio 2015?如何在 Visual Studio 2015 中禁用 C# 6 支持?
【发布时间】:2015-08-08 07:26:12
【问题描述】:

背景

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

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

问题

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

我有 disabled the ReSharper C#6 support,但我似乎无法在整个解决方案中禁用/限制 C# 功能。

问题

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

【问题讨论】:

  • 构建选项卡,高级按钮,语言版本设置。
  • @HansPassant 谢谢!这正是它。我会以答案形式写出来,但如果你在这里发布答案,我一定会把你的答案标记为正确的。
  • 正是我的问题!除了我们的解决方案是在 2013 年,但我想继续使用 VS2015。
  • @entre 不一定需要;您总是可以不使用 C#6 功能。不过,Visual Studio 和 resharper 建议使用这些功能进行重构。只要您的构建机器支持 C#6,就应该没有问题。
  • 我不想使用 c#6 ......但我仍然收到这些建议..我删除了它们以进行 resharper ..但要求视觉工作室......我猜视觉工作室不会提供智能感知建议使用 c#6,因为我的 .net 框架是 4.5

标签: c# visual-studio c#-5.0 visual-studio-2015 c#-6.0


【解决方案1】:

上面已经写好了步骤,只是在我的VS2015进一步截图:

项目属性>>构建>>高级>>语言版本

我将其设置为 C# 5.0。

【讨论】:

    【解决方案2】:

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

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


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

    【讨论】:

    • 你知道VB.NET是否有等效的设置吗?
    • 我今天早些时候得到了答案。 stackoverflow.com/questions/31454902/…
    • 更改项目属性后,我的 Studio 仅在编辑器中标记 C# 6.0 代码。但不会将其视为错误(构建成功)。
    • 如果你有很多项目,我建议直接编辑csproj。在第一个 PropertyGroup 元素中添加以下内容:<LangVersion>5</LangVersion>
    • 在 VS2017 中禁用 C#7 支持的方式完全相同 - 只需改用 <LangVersion>6</LangVersion>
    【解决方案3】:

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

    【讨论】:

      【解决方案4】:

      您可以使用MSBuildUserExtensionsPath 为所有solutions/csproj 设置语言功能。

      搜索$(MSBuildUserExtensionsPath)的值,应该是C:\Users\$(User)\AppData\Local\Microsoft\MSBuild之类的东西

      然后编辑文件夹$(MSBuildUserExtensionsPath)\14.0\Imports\Microsoft.Common.Props\ImportBefore中的文件Force.LangVersion.ImportBefore.props

      <Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
        <PropertyGroup>
          <LangVersion>5</LangVersion>
        </PropertyGroup>
      </Project>
      

      【讨论】:

        【解决方案5】:

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

        <s:String x:Key="/Default/CodeInspection/CSharpLanguageProject/LanguageLevel/@EntryValue">CSharp50</s:String>
        

        或者如果您没有.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>
          
        3. 关闭并重新打开解决方案,Resharper 应该只警告您有关 C#5 的事情。

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

        【讨论】:

        • 这应该被标记为答案,因为它适用于解决方案中的所有项目并且是可以签入的文件。
        • @twoleggedhorse 实际上这个答案只与 OP 已经禁用的 Resharper 相关,所以它甚至不回答这个问题。
        • 我也同意,这应该被标记为答案。 OP 询问了解决方案范围的设置,只有这个答案提供。
        • 好吧,无论如何,这并不妨碍 Visual Studio 展示 Microsoft 自己的代码改进建议(阻止这些建议才是真正的问题)。这个答案适用于 ReSharper,不适用于 Visual Studio(并非所有人都在使用 ReSharper)。
        【解决方案6】:

        在项目资源管理器中右键单击项目并选择属性。

        当属性选项卡打开时,选择构建并单击右下角的高级按钮。

        有一个下拉框叫语言版本。将选择更改为“C# 5.0”

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2017-02-09
          • 2016-06-05
          • 1970-01-01
          • 1970-01-01
          • 2017-07-09
          • 1970-01-01
          • 2015-11-29
          • 2015-10-17
          相关资源
          最近更新 更多