How to make razor view engine to use c# 6.0

后端 未结 4 1129
盖世英雄少女心
盖世英雄少女心 2020-12-09 14:57

Currently my razor view engine throws and error saying \"Please use language version 6 or higher\". That may just be resharper giving me a pointer. But how do i make razor u

相关标签:
4条回答
  • 2020-12-09 15:02

    Other answers are quite good, but I found a good and short article that definitively clarify the steps for this issue: https://cpratt.co/using-csharp-6-or-7-with-mvc-5/

    In short:

    1. In the Package Manager Console install Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

    2. checka/alters you Web.config with the following lines at the end:

    <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>
    
    0 讨论(0)
  • 2020-12-09 15:04

    If you are running this from a 4.5.1 project, upgrading to 4.5.2 might fix it.

    Otherwise, it is recommended to install this NuGet package to provide the new functionalities: Microsoft.CodeDom.Providers.DotNetCompilerPlatform

    So doing something like this:

    <p>@Model.Person?.Name</p>
    

    Might work. If it doesn't, try being explicit like this:

    <p>@(Model.Person?.Name)</p>
    
    0 讨论(0)
  • 2020-12-09 15:04

    The best step-by-step instructions I could find for enable C# 6 features in RazorEngine templates is here: https://github.com/Antaris/RazorEngine/issues/363#issuecomment-273106183

    What's not mentioned in there is to make sure when adding the compilers section to your app.config, that the version number matches the version from the package you are installing. In the comment it was version 1.0.3, but the package I installed had 1.0.4 instead, so it needed to look like this:

    <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:6 /nowarn:1659;1699;1701"/>
    </compilers>
    

    0 讨论(0)
  • 2020-12-09 15:08

    I believe this is due to a bug in the templates for web.config when the project is upgraded to a newer version of the .net framework.

    I was able to fix this by going in to web.config, finding the system.codedom node, and changing the content to look like this:

    <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>
    
    0 讨论(0)
提交回复
热议问题