在Razor视图中使用“nameof”运算符

时间:2015-11-20 09:13:35

标签: c# .net asp.net-mvc razor c#-6.0

在我的VS.NET 2015开发机器上,使用nameof operator工作的Razor视图就像魅力一样。

部署到Windows服务器时,无法编译CSHTML Razor视图:

  

当前上下文中不存在名称“nameof”。

德语:

  

Der Name'nameof'ist im aktuellen Kontext nicht vorhanden。

我安装了.NET Framework 4.6(“ASP.NET版本:4.6.81.0”)但没有成功。

我很可能会遗漏一些简单的东西。

尽管如此,我真的很无能为力。它是web.config设置吗?或其他什么?

我的问题:

如何在CSHTML Razor视图中启用C#6功能(如nameof运算符)?

2 个答案:

答案 0 :(得分:32)

根据this site,您需要在Web.config文件中引用Roslyn编译器,以使C#6功能在您的剃刀视图中起作用。

只需安装CodeDOM Providers for .NET Compiler NuGet package

即可实现
PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform

答案 1 :(得分:18)

确保在您的文件“web.config”中存在节点system.codedom

<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>
 </system.codedom>

您可以参考包Microsoft.CodeDom.Providers.DotNetCompilerPlatform