2015-11-20 9 views
21

Sul mio computer di sviluppo VS.NET 2015, le visualizzazioni del rasoio che utilizzano lo nameof operator funzionano come un incantesimo.Utilizzo dell'operatore "nameof" nelle viste del rasoio

Quando si distribuisce a un server Windows, non riesce a compilare il punto di vista CSHTML Razor:

Il nome 'nameof' non esiste nel contesto attuale.

In tedesco:

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

Ho installato .NET Framework 4.6 ("versione ASP.NET: 4.6.81.0") senza esito positivo.

Molto probabilmente mi manca qualcosa di semplice.

Ancora, sono davvero all'oscuro. È un'impostazione web.config? O qualcos'altro?

La mia domanda:

come attivare C# 6 funzioni (come l'operatore nameof) in vista CSHTML rasoio?

+0

Grazie, @ Ksv3n l'ho fatto (di nuovo), solo per essere sicuro. Nessun cambiamento nei risultati, ancora l'errore di compilazione. "' Versionsinformationen: Microsoft .NET Framework-Version: 4.0.30319; Versione ASP.NET: 4.6.81.0' " –

risposta

14

Verificare nel file "web.config" il nodo 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> 

E tu saresti riferimento il pacchetto Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

+0

Che in realtà ha funzionato. Queste linee erano presenti sulla mia macchina di sviluppo locale ma non sul server. Grazie! –

+1

fa questo nel 'Web.config' principale o nelle viste 'Web.config'? – Maslow

+2

@Maslow main Web.config – chsword

30

Secondo this site, è necessario fare riferimento al compilatore Roslyn nel proprio file Web.config per ottenere funzioni C# 6 che funzionino nelle visualizzazioni del rasoio.

Questo può essere ottenuto semplicemente installando CodeDOM Providers for .NET Compiler NuGet package.

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

Questa risposta sovrascrive le [chsword] della propria. –