【发布时间】:2017-07-02 04:29:42
【问题描述】:
我在解决方案中有几个项目,并且 C# 7 功能(例如元组和 throw 表达式)在所有库项目中都可以正常工作,但是有一个(非核心)Web 项目由于以下原因无法编译C# 7 功能上的错误。编译后,错误窗口很快就会自行清除,这可能是因为 IDE/编辑器编译相同的单元而没有错误。我必须使用输出窗口来查看编译器错误。就好像 IDE/编辑器假设 C# 7,但构建中使用的编译器不是。
我尝试在条件编译符号中添加“__DEMO__,__DEMO_EXPERIMENTAL__”,但无济于事。我已经尝试针对不同版本的框架并编辑了 web.config,包括 system.web 的 compilation 和 targetFramework 标签。
错误示例:
if (!config.Properties.TryGetValue(modelId, out var model)) // error CS1003: Syntax error, ',' expected
if (modelDescription is ComplexTypeModelDescription complexTypeModelDescription) // error CS1026: ) expected
这是项目的 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')" />
更新:我尝试使用 VS 2017 RC 中的最新模板创建一个新的 Web 项目并复制到我的源文件中。一样。
我也尝试过明确设置 Project |属性 |构建 |高级 |语言版本为 7。导致“/langversion 的选项 '7' 无效”。
【问题讨论】:
标签: asp.net visual-studio-2017 c#-7.0