2015-11-20 55 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]的。 –