在Razor视图中使用"nameof"运算符

Uwe*_*eim 25 .net c# asp.net-mvc razor c#-6.0

在我的VS.NET 2015开发机器上,使用nameof操作符的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设置吗?或者是其他东西?

我的问题:

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

Jam*_*tan 33

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

这可以通过安装CodeDOM Providers for .NET Compiler NuGet包来实现.

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Run Code Online (Sandbox Code Playgroud)

  • 这个答案会覆盖[chsword]的一个. (7认同)
  • 我还必须重新启动Visual Studio(2015) (2认同)

chs*_*ord 19

确保在您的文件"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>
Run Code Online (Sandbox Code Playgroud)

你会参考这个包Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

  • @Maslow主要是Web.config (2认同)