C#7功能在Visual Studio 2017 RC上的Web项目中不起作用

N8a*_*lan 12 asp.net c#-7.0 visual-studio-2017

我在解决方案中有几个项目,C#7的功能,如元组和throw表达式,在所有库项目中都能正常工作,但是有一个(非核心)Web项目由于错误而无法编译C#7功能.在编译之后,错误窗口会快速清除,大概是因为IDE /编辑器编译相同的单元而没有错误.我必须使用输出窗口来查看编译器错误.好像IDE /编辑器假设是C#7,但构建中使用的编译器不是.

我试过__DEMO__,__DEMO_EXPERIMENTAL__在条件编译符号中添加" "无济于事.我已经尝试定位不同版本的框架,并编辑了web.config,包括compilationtargetFramework标签system.web.

示例错误:

if (!config.Properties.TryGetValue(modelId, out var model)) // error CS1003: Syntax error, ',' expected
if (modelDescription is ComplexTypeModelDescription complexTypeModelDescription) // error CS1026: ) expected
Run Code Online (Sandbox Code Playgroud)

以下是该项目的csproj文件的前几行:

<Project ToolsVersion="14.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
  <Import Project="..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props" Condition="Exists('..\packages\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.1.0.3\build\Microsoft.CodeDom.Providers.DotNetCompilerPlatform.props')" />
  <Import Project="..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props" Condition="Exists('..\packages\Microsoft.Net.Compilers.1.3.2\build\Microsoft.Net.Compilers.props')" />
  <Import Project="$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props" Condition="Exists('$(MSBuildExtensionsPath)\$(MSBuildToolsVersion)\Microsoft.Common.props')" />
Run Code Online (Sandbox Code Playgroud)

更新:我尝试使用VS 2017 RC中的最新模板创建一个新的Web项目并复制我的源文件.一样.

我也试过明确设置Project | 属性| 建立| 高级| 语言版本为7.结果为"/ langversion"的"无效选项'7'".

N8a*_*lan 23

溶液是更新Microsoft.Net.Compilers NuGet包为> = 2.0.0.截至目前,要显示2.0.0版本,必须选中包管理器顶部的"包含预发布"复选框.安装此选项后,Language version不必重写高级设置Default.