Actualmente, mi motor de vista de afeitadora arroja un error que dice "Utilice la versión de idioma 6 o superior". Eso puede ser más nítido dándome un puntero. Pero, ¿cómo hago para que Razor use c# 6.0. El resto de mi solución en los archivos cs puedo usar todas las características de la nueva versión 7.
Creo que esto se debe a un error en las plantillas para web.config cuando el proyecto se actualiza a una versión más nueva de .net framework.
Pude arreglar esto ingresando a web.config , encontrando el nodo system.codedom y cambiando el contenido para que se vea así:
<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=\"Web\" /optionInfer+" /> </compilers>Si está ejecutando esto desde un proyecto 4.5.1 , actualizar a 4.5.2 podría solucionarlo.
De lo contrario, se recomienda instalar este paquete NuGet para brindar las nuevas funcionalidades: Microsoft.CodeDom.Providers.DotNetCompilerPlatform
Así que haciendo algo como esto:
<p>@Model.Person?.Name</p>Podría funcionar. Si no es así, intenta ser explícito de esta manera:
<p>@(Model.Person?.Name)</p>Otras respuestas son bastante buenas, pero encontré un buen y breve artículo que aclara definitivamente los pasos para este problema: https://cpratt.co/using-csharp-6-or-7-with-mvc-5/
En breve:
En la Consola del administrador de paquetes, instale Install-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform
checka/alters you Web.config con las siguientes líneas al final:
<system.codedom> <compilers> <compiler language="c#;cs;csharp" extension=".cs" type="Microsoft.CodeDom.Providers.DotNetCompilerPlatform.CSharpCodeProvider, Microsoft.CodeDom.Providers.DotNetCompilerPlatform, Version=1.0.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:7 /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.4.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35" warningLevel="4" compilerOptions="/langversion:15 /nowarn:41008 /define:_MYTYPE=\"Web\" /optionInfer+" /> </compilers> </system.codedom>