如何在 Visual Studio 2015 中禁用 C# 6 支持?
How do I disable C# 6 Support in Visual Studio 2015?
背景
我们有一个项目是在启用了 C#6 的 VS 2015 中开发的,偶尔需要由使用没有 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 的功能?
您可以转至 Properties => Build tab => Advanced button => Language Version
并设置您的首选版本,从而为每个项目分别设置语言功能。
您应该意识到它仍将使用新的 "C# 6.0" .Net 编译器平台(代号 Roslyn)。但是,该编译器将模仿 旧编译器的行为,并将限制您使用仅适用于该特定语言版本的功能。
我认为没有可用的解决方案范围设置。
右键单击 Project Explorer 中的 Project 和 select Properties。
当“属性”选项卡打开时 select 构建并单击右下角的“高级”按钮。
有一个叫做语言版本的下拉框。将 select 更改为 "C# 5.0"
在 .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 功能时,请不要忘记删除它! :)
您可以为所有 solutions/csproj
和 MSBuildUserExtensionsPath
设置语言功能。
搜索 $(MSBuildUserExtensionsPath)
的值,它应该类似于 C:\Users$(User)\AppData\Local\Microsoft\MSBuild
然后用 :
编辑文件夹 $(MSBuildUserExtensionsPath).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>
如果您有很多项目需要设置 LangVersion
,我写的这篇 tool 可能会对您有所帮助。
上面已经写了步骤,再贴一张我的VS2015的截图:
项目属性>>构建>>高级>>语言版本
我将其设置为 C# 5.0。
背景
我们有一个项目是在启用了 C#6 的 VS 2015 中开发的,偶尔需要由使用没有 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 的功能?
您可以转至 Properties => Build tab => Advanced button => Language Version
并设置您的首选版本,从而为每个项目分别设置语言功能。
您应该意识到它仍将使用新的 "C# 6.0" .Net 编译器平台(代号 Roslyn)。但是,该编译器将模仿 旧编译器的行为,并将限制您使用仅适用于该特定语言版本的功能。
我认为没有可用的解决方案范围设置。
右键单击 Project Explorer 中的 Project 和 select Properties。
当“属性”选项卡打开时 select 构建并单击右下角的“高级”按钮。
有一个叫做语言版本的下拉框。将 select 更改为 "C# 5.0"
在 .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 功能时,请不要忘记删除它! :)
您可以为所有 solutions/csproj
和 MSBuildUserExtensionsPath
设置语言功能。
搜索 $(MSBuildUserExtensionsPath)
的值,它应该类似于 C:\Users$(User)\AppData\Local\Microsoft\MSBuild
然后用 :
编辑文件夹$(MSBuildUserExtensionsPath).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>
如果您有很多项目需要设置 LangVersion
,我写的这篇 tool 可能会对您有所帮助。
上面已经写了步骤,再贴一张我的VS2015的截图:
项目属性>>构建>>高级>>语言版本
我将其设置为 C# 5.0。