2015-11-20 12 views
21

Auf meiner VS.NET 2015 Entwicklungsmaschine arbeiten die Razor Ansichten, die nameof operator verwenden, wie ein Charme.Verwenden von "Nameof" -Operator in Razor Ansichten

Wenn auf einem Windows-Server bereitstellen, schlägt es die CSHTML Razor Ansichten zu kompilieren:

Der Name 'nameof' existiert nicht im aktuellen Kontext.

In Deutsch:

Der Name des 'nameof' ist im current Kontext nicht vorhanden.

Ich habe .NET Framework 4.6 ("ASP.NET Version: 4.6.81.0") ohne Erfolg installiert.

Vermutlich vermisse ich etwas Einfaches einfach.

Noch bin ich wirklich ahnungslos. Ist es eine web.config Einstellung? Oder etwas anderes?

Meine Frage:

Wie C# 6 Funktionen (wie der nameof Operator) in CSHTML Razor Ansichten aktivieren?

+0

Danke, @ Ksv3n Ich habe es getan (wieder), nur um sicher zu sein. Keine Änderung der Ergebnisse, immer noch der Kompilierungsfehler. "Versionsinformationen: Microsoft .NET Framework-Version: 4.0.30319; ASP.NET-Version: 4.6.81.0'" –

Antwort

14

Stellen Sie sicher, dass in Ihrer Datei "web.config" der Knoten system.codedom existiert.

<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> 

Und Sie würden das Paket Microsoft.CodeDom.Providers.DotNetCompilerPlatform verweisen.

+0

Das hat tatsächlich den Trick gemacht. Diese Zeilen waren auf meiner lokalen Dev-Maschine vorhanden, aber nicht auf dem Server. Vielen Dank! –

+1

geht das in der Haupt 'Web.config' oder Views' 'Web.config'? – Maslow

+2

@Maslow Haupt Web.config – chsword

30

Gemäß this site müssen Sie den Roslyn-Compiler in Ihrer Web.config-Datei referenzieren, damit C# 6-Funktionen in Ihren Rasiereransichten funktionieren.

Dies kann einfach durch die Installation der CodeDOM Providers for .NET Compiler NuGet package erreicht werden.

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

Diese Antwort überschreibt die [chsword] one's. –

Verwandte Themen