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

Posted

技术标签:

【中文标题】如何在 Visual Studio 2015 中禁用 C# 6 支持?【英文标题】:How do I disable C# 6 Support in Visual Studio 2015? 【发布时间】: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 【参考方案1】:

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

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

我将其设置为 C# 5.0。

【讨论】:

【参考方案2】:

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

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


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

【讨论】:

你知道VB.NET是否有等效的设置吗? 我今天早些时候得到了答案。 ***.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 文件:

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

    给它以下内容:

    <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>
    

    关闭并重新打开解决方案,Resharper 应该只警告您有关 C#5 的事情。

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

【讨论】:

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

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

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

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

【讨论】:

以上是关于如何在 Visual Studio 2015 中禁用 C# 6 支持?的主要内容,如果未能解决你的问题,请参考以下文章

visual studio 2015怎么用

visual studio 2015 和.net 啥区别

visual studio 2015 怎么更新

visual studio 2015怎样升级

如何在 Visual Studio 2015 中启用 WiX 项目

如何在 Visual Studio 2015 中使用 C# 7?