如何在 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 支持?的主要内容,如果未能解决你的问题,请参考以下文章