2015-11-20 22 views
21

在我的VS.NET 2015开发机器上,使用nameof operator的Razor视图的工作就像一个魅力。在剃刀视图中使用“nameof”操作符

当部署到Windows服务器失败,编译CSHTML剃刀观点:

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

在德国:

明镜名称 'nameof' IST IM aktuellen Kontext nicht vorhanden。

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

最有可能我失去了一些简单的东西。

不过,我真的很无能。它是一个web.config设置?或者是其他东西?

我的问题:

如何让C#6功能(如nameof运营商)在CSHTML剃刀看法?

+0

谢谢,@ Ksv3n我已经做了(再次),只是为了确保。结果没有变化,仍然是编译错误。 “'版本信息:Microsoft .NET Framework-Version:4.0.30319; ASP.NET-Version:4.6.81.0'” –

回答

14

请确保在您的文件“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

+0

这实际上是个窍门。这些行出现在我的本地开发机器上,但不在服务器上。谢谢! –

+1

这是否在主'Web.config'或Views''Web.config'? – Maslow

+2

@Maslow主Web.config – chsword

30

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

这可以简单地通过安装CodeDOM Providers for .NET Compiler NuGet package来实现。

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

这个答案会覆盖[chsword]的。 –