Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

209
Vistas
Uso de funciones de C# 7 dentro de una Vista en un proyecto ASP.NET MVC Core

He buscado otras preguntas relacionadas con esto, pero ninguna parece ser lo que estoy buscando.

Tengo un sitio web que se ejecuta en ASP.NET Core con la nueva estructura de proyecto en VS2017. Los archivos de código que utilizan las funciones de C#7 se compilan correctamente. Pero intentar usar esas funciones en una Vista da como resultado una serie de errores sobre la sintaxis. Intenté instalar Roslyn para que se usara al compilar vistas, ya que, por lo que puedo decir, las características de C#7 están disponibles en el paquete Roslyn nuget 2.x y superior. Pero ahora recibo comentarios que dicen explícitamente

error CS8059: la característica 'declaración de variable fuera' no está disponible en C# 6. Utilice la versión de idioma 7 o superior.

En el pasado, verificaba web.config, pero no hay web.config en un proyecto ASP.NET Core que no sea el casi vacío en la raíz para manejar la solicitud desde IIS.

¿Cómo indico que mis vistas deben compilarse con Roslyn ya que eso no se hace hasta el tiempo de ejecución? Al menos supongo que eso solucionaría mi problema en este punto.

Editar: esa pregunta no es un duplicado de esto, como mencioné al principio, también busqué preguntas existentes. Eso es habilitar específicamente las funciones de C#7 en su aplicación en tiempo de compilación, y solo para una aplicación ASP.NET. Estoy usando ASP.NET Core, que no tiene un archivo web.config con ninguna configuración de compilación definida en él. Además, lo que estoy tratando de hacer para las Vistas que se compilan en tiempo de ejecución y pueden estar en un sistema diferente.

Solución:

Para cualquier persona interesada, debe agregar a Roslyn a su proyecto (lo cual sabía), pero también debe configurar RazorViewEngineOptions para usar CSharpParseOptions que indican la versión del idioma (el valor predeterminado es 6). Había hecho esto pero no lo hice correctamente. Necesitaba asignar el resultado de WithLanguageVersion() sobre ParseOptions para reemplazarlos.

 services.AddMvc().AddRazorOptions(options => options.ParseOptions = options.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7));
about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

¿Podría probar lo siguiente (recomendado por la gente del equipo central de ASP.NET):

  1. Instale los paquetes Microsoft.CodeAnalysis.CSharp (versión 2.0.0) y System.ValueTuple (versión 4.3.0)
  2. En Startup.cs, en el método ConfigureServices, configure Razor para usar C# 7 haciendo lo siguiente:

     services.AddMvc().AddRazorOptions(options => options.ParseOptions = new CSharpParseOptions(LanguageVersion.CSharp7));
about 4 years ago · Santiago Trujillo Denunciar

0

Así que descubrí que hay algunas opciones de compilación expuestas a las que llama en la llamada ConfigureServices() .

 public void ConfigureServices(IServiceCollection services) { // Add framework services. services.AddMvc().AddRazorOptions(x => x.ParseOptions.WithLanguageVersion(LanguageVersion.CSharp7)); }

El problema es LanguageVersion.CSharp7 da un error si no agrega Roslyn. Así que supongo que es necesario.

Después de agregar a Roslyn, todo se compila bien, PERO la vista aún da un error.

 @{ //My view code string s = "1"; int.TryParse(s, out int i); }

Entonces, si MVC expone RazorOptions que puede usar para especificar la versión del idioma, ¿por qué no se respeta?

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda