在asp.net应用程序中启用c#7

我刚刚开始在Visual Studio 2017中使用旧的解决scheme。只需在旧的IDE中打开解决scheme即可无缝工作。 c#应用程序项目现在默认为c#7.0编译器。 这些项目(编译/高级)的属性页面可以轻松select编译器的目标语言版本,默认是最新版本。

我找不到在asp.net web项目中启用c#7.0的方法。 如果我写一个陈述如:

if (int.TryParse("1", out int myInt)) { ... } 

IDE警告我说我需要使用该语言的版本7+。

我对这个主题的研究显示,我应该针对web.config文件的system.codedom编译器区域中的特定c#版本,以便定位最新的Roslyn版本。

我现在拥有的是:

  <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.3.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701"/> 

哪些目标c#6.什么是C#7的正确设置,只要我已经下载最新的Roslyn与nuget?

更新这里是一个Web项目的可用编译选项(这是意大利VS2017,但应该很容易理解)的屏幕截图。 没有可能在那里select目标C#版本。 编译选项

在网站的NuGet窗口中:

  1. 卸载Microsoft.CodeDom.Providers.DotNetCompilerPlatform
  2. 重新安装它
  3. web.config ,在: system.codedom > compilers > compiler ,更改compilerOptions =“/ langversion: 6到7

我可以使用默认的语言设置进行编译,但不能使用C#7选项。 在这里输入图像描述

但下面的设置给编译时间错误:

在这里输入图像描述

所以你可以保持你的语言版本设置为默认。

如果您尝试使用Roslyn而不使用Visual 2017默认编译器构build,那么您可能需要做一些更改

select您的项目名称,然后右键单击>>属性窗口>>构build,然后在“条件编译符号”文本框中添加以下两个选项DEMODEMO_EXPERIMENTAL

在这里输入图像描述

更新

为了使用C#7.0,您需要使用2.0+版本的Microsoft.Net.Compilers

在这里输入图像描述

在安装最新版本的Microsoft.Net.Compilers(2.0+)之后, 您可以select语言版本为C#7。

所以最好的解决scheme是安装最新版本的Microsoft.Net.Compilers(2.0+)。

对于C#7.x支持,将构buildconfiguration语言版本设置为C#最新次要版本(最新)

构buildconfiguration语言版本

如果您正在使用Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider nuget包,请在web.config中为asp.net设置compilerOptions =“/ langversion:latest”

 <system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.7.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:latest /nowarn:1659;1699;1701"/> </compilers> 

欲了解更多信息: https : //docs.microsoft.com/en-us/dotnet/csharp/language-reference/compiler-options/langversion-compiler-option