Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
En este documento se enumeran los cambios importantes conocidos en Razor después de la versión general de .NET 8 (VERSIÓN 8.0.100 del SDK de .NET) a través de la versión general de .NET 9 (VERSIÓN 9.0.100 del SDK de .NET).
El análisis de @
identificadores se ha unificado
Introducido en VS 17.10 y .NET 8.0.300
En https://github.com/dotnet/razor/pull/10232, ajustamos el comportamiento de cómo se analiza un identificador siguiendo un @
para ser más coherente en Razor.
Esto dio lugar a algunos escenarios que tienen un comportamiento diferente, que se enumeran a continuación.
Cadenas interpoladas textuales
Las cadenas del formulario @$"ticket-{i}.png"
ya no se reconocen. Esto se corregirá en una versión posterior cambiando a un nuevo lexer; hasta entonces, use $@
para solucionar el problema.
Las directivas de preprocesador de C# seguidas de HTML no se analizan correctamente
- La directiva de preprocesador está directamente antes de HTML. Este sabor tiene un aspecto similar al siguiente:
@{
#region R
<h3>@ViewData["Title"]</h3>
#endregion
}
- Hay C# válido entre la directiva de preprocesador y el html, pero no tiene un carácter que indique al analizador que finalice el análisis antes del CÓDIGO HTML. Se trata de una variación de 1 y puede producirse con cosas como
switch
instrucciones:
@{
switch (true)
{
#region R
case true:
<div>@(1 + 1)</div>
break;
}
}
Anteriormente, las directivas de preprocesador de C# seguidas de HTML a veces se analizarían correctamente si el CÓDIGO HTML tuviera una @
transición en él. Ahora se analiza de forma coherente incorrectamente. Esto se resolverá en una versión posterior cambiando a un nuevo lexer. Hasta entonces, hay soluciones alternativas disponibles para que se compile.
Rodear el CÓDIGO HTML en un bloque
El HTML se puede rodear con llaves.
@{
#if DEBUG
{
<h3>@ViewData["Title"]</h3>
}
#endif
}
Adición de un punto y coma a la directiva
Directivas como #region
y #endregion
permiten colocar un punto y coma después de la directiva. Esto solucionará eficazmente el problema.
@{
#region R ;
<h3>@ViewData["Title"]</h3>
#endregion
}
Agregar un punto y coma después de la directiva
Las directivas como #if
y #endif
no permiten punto y coma después de la condición de directiva, pero se puede colocar una en la línea siguiente para crear una instrucción vacía.
@{
#if DEBUG
;
<h3>@ViewData["Title"]</h3>
#endif
}