Uso del operador "nameof" en las vistas Razor


En mi VS.NET 2015 máquina de desarrollo, las vistas Razor que utilizan el nameof operator funciona a la perfección.

Cuando se implementa en un servidor Windows, no puede compilar las vistas Razor de CSHTML:

El nombre 'nameof' no existe en el contexto actual.

En alemán:

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

He instalado. NET Framework 4.6 ("ASP.NET versión: 4.6.81.0") con no éxito.

Lo más probable es que me esté perdiendo algo simple y llanamente.

Aún así, no tengo ni idea. Es una red.config configuración? O algo más?

Mi pregunta:

¿Cómo habilitar las características de C# 6 (como el operador nameof) en las vistas Razor de CSHTML?

Author: Uwe Keim, 2015-11-20

2 answers

Asegúrese en su archivo " web.config " el nodo system.codedom existe.

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

Y haría referencia al paquete Microsoft.CodeDom.Providers.DotNetCompilerPlatform.

 17
Author: chsword,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-02-01 08:28:33

De acuerdo con este sitio, necesita hacer referencia al compilador Roslyn en su Web.archivo de configuración para que las funciones de C# 6 funcionen en las vistas de razor.

Esto se puede lograr simplemente instalando los proveedores de código para el paquete NuGet del compilador.NET.

PM> Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
 32
Author: Jamie Dunstan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-11-20 09:34:07