在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窗口中:
- 卸载
Microsoft.CodeDom.Providers.DotNetCompilerPlatform
- 重新安装它
- 在
web.config
,在:system.codedom > compilers > compiler
,更改compilerOptions
=“/ langversion: 6到7
我可以使用默认的语言设置进行编译,但不能使用C#7选项。
但下面的设置给编译时间错误:
所以你可以保持你的语言版本设置为默认。
如果您尝试使用Roslyn而不使用Visual 2017默认编译器构build,那么您可能需要做一些更改
select您的项目名称,然后右键单击>>属性窗口>>构build,然后在“条件编译符号”文本框中添加以下两个选项DEMO , DEMO_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