C#6.0特性不适用于VisualStudio 2015

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (40)

我正在用C#6.0测试VisualStudio 2015,但是语言特性不起作用。在MVC Web应用程序中,以下代码确实编译:

if (!string.IsNullOrWhiteSpace(Model.Profile?.TypeName))
{
    // More logic here...
}

但是,当我通过Debug和IIS Express运行应用程序时,我会得到以下错误:

CS 1525:无效表达式术语‘.’

如何启用这些功能?

提问于
用户回答回答于

这在MVC 5(测试5.2.3)中有效,只需添加Roslyn代码dom Nuget包即可

用于.NET编译器的CodeDOM提供程序.

替换使用新的CodeDOM提供程序。NET编译器平台(“Roslyn”)编译器作为服务API。这提供了对使用CodeDOM的系统中的新语言特性的支持(例如,ASP)。NET运行时编译)以及提高这些系统的编译性能。

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

用户回答回答于

如果以4.5.1-4.6作为目标,则必须在web.config部分进行更改

  <system.codedom>
    <compilers>
      <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CSharp.CSharpCodeProvider, System, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701">
          <providerOption name="CompilerVersion" value="v4.0"/>
      </compiler>
      <compiler language="vb;vbs;visualbasic;vbscript" extension=".vb" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:14 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+"/>
    </compilers>
  </system.codedom>

C#,只要改变类型致:

type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" 

扫码关注云+社区