如何使剃刀视图引擎使用c#6.0

MoX*_*lod 39 .net c# asp.net asp.net-mvc razor

目前我的剃刀视图引擎抛出错误并说"请使用语言版本6或更高版本".那可能只是重新给我一个指针.但是我如何使用剃刀使用c#6.0.我在cs文件中的其余解决方案我可以使用所有新版本7的功能.

Bra*_*ner 23

我相信这是由于模板中web.config的项目升级到更新版本的.net框架时的错误.

我能够通过进入web.config,找到system.codedom节点,并将内容更改为以下内容来解决此问题:

<compilers>
  <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:6 /nowarn:1659;1699;1701" />
  <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>
Run Code Online (Sandbox Code Playgroud)

  • 必须安装Microsoft.Net.Compilers和Microsoft.CodeDom.Providers.DotNetCompilerPlatform才能工作 (11认同)
  • 是的,感谢@Alen,我发现只需为Microsoft.CodeDom.Providers.DotNetCompilerPlatform安装Nuget pkg就足够了,因为Microsoft.Net.Compilers是一个依赖项. (4认同)
  • (重新)安装上面两个软件包会将此部分添加到.config文件中. (2认同)
  • [DotNetCompilerPlatform v3.6.0](https://www.nuget.org/packages/Microsoft.CodeDom.Providers.DotNetCompilerPlatform/3.6.0) 不再依赖于“Microsoft.Net.Compilers” (2认同)

Max*_*ler 14

如果从4.5.1项目运行此项,升级到4.5.2可能会修复它.

否则,建议安装此NuGet包以提供新功能: Microsoft.CodeDom.Providers.DotNetCompilerPlatform

所以做这样的事情:

<p>@Model.Person?.Name</p>
Run Code Online (Sandbox Code Playgroud)

可能会工作.如果没有,请尝试显式如下:

<p>@(Model.Person?.Name)</p>
Run Code Online (Sandbox Code Playgroud)


Gia*_*tti 8

其他答案都很好,但我发现了一篇很好的简短文章,明确阐明了此问题的步骤:https : //cpratt.co/using-csharp-6-or-7-with-mvc-5/

简而言之:

  1. 在包管理器控制台中安装 Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

  2. checka/alters 你 Web.config 在末尾有以下几行:

<system.codedom>
  <compilers>
    <compiler language="c#;cs;csharp"
      extension=".cs"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4"
      compilerOptions="/langversion:7 /nowarn:1659;1699;1701" />
    <compiler language="vb;vbs;visualbasic;vbscript"
      extension=".vb"
      type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.VBCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"
      warningLevel="4"
      compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\&quot;Web\&quot; /optionInfer+" />
  </compilers>
</system.codedom>
Run Code Online (Sandbox Code Playgroud)