Compatibilidad de la Recarga activa de .NET con ASP.NET Core

La recarga activa de .NET aplica cambios de código, incluidos los cambios en las hojas de estilos, a una aplicación en ejecución sin reiniciar la aplicación y sin perder el estado de la aplicación. La recarga en caliente es compatible con todos los proyectos de ASP.NET Core en .NET 6 o versiones posteriores.

Por lo general, el código actualizado se vuelve a ejecutar para surtir efecto con las condiciones siguientes:

  • Algunas lógicas de inicio solo se ejecutan una vez:
    • Middleware, a menos que la actualización del código sea para un delegado de middleware insertado.
    • Servicios configurados.
    • Creación y configuración de rutas, a menos que la actualización del código sea para un delegado del controlador de rutas (por ejemplo, OnInitialized).
  • En las Blazor aplicaciones, el marco de trabajo activa automáticamente la representación de un Razor componente.
  • En las aplicaciones de MVC y Razor Pages, Recarga activa desencadena automáticamente una actualización del navegador.
  • La eliminación de un atributo Razorparámetro de componente no provoca que el componente se vuelva a representar. La aplicación debe reiniciarse.

Para obtener más información sobre los escenarios admitidos, vea Cambios de código admitidos (C# y Visual Basic).

Blazor WebAssembly

Blazor WebAssembly La recarga en caliente admite los siguientes cambios de código:

  • Nuevos tipos.
  • Clases anidadas.
  • La mayoría de los cambios en los cuerpos de método, como agregar, quitar y editar variables, expresiones e instrucciones.
  • Cambios en los cuerpos de expresiones lambda y funciones locales.
  • Agregar métodos estáticos e de instancia a los tipos existentes.
  • Agregar campos, eventos y propiedades estáticos y de instancia a tipos existentes.
  • Agregar expresiones lambda estáticas a los métodos existentes.
  • Adición de lambdas que capturan this a los métodos existentes que ya capturaban this anteriormente.

Tenga en cuenta que cuando se quita un atributo que previamente establece el valor de un parámetro de componente, el componente se elimina y se vuelve a inicializar para volver a establecer el parámetro quitado en su valor predeterminado.

Los cambios de código siguientes no se admiten para Blazor WebAssembly las aplicaciones:

Blazor WebAssembly La recarga en caliente admite los siguientes cambios de código:

  • Nuevos tipos.
  • Clases anidadas.
  • La mayoría de los cambios en los cuerpos de método, como agregar, quitar y editar variables, expresiones e instrucciones.
  • Cambios en los cuerpos de expresiones lambda y funciones locales.
  • Agregar métodos estáticos e de instancia a los tipos existentes.
  • Agregar campos estáticos a tipos existentes.
  • Agregar expresiones lambda estáticas a los métodos existentes.
  • Adición de lambdas que capturan this a los métodos existentes que ya capturaban this anteriormente.

Tenga en cuenta que cuando se quita un atributo que previamente establece el valor de un parámetro de componente, el componente se elimina y se vuelve a inicializar para volver a establecer el parámetro quitado en su valor predeterminado.

Los cambios de código siguientes no se admiten para Blazor WebAssembly las aplicaciones:

  • Añadir un nuevo await operador o una expresión con una yield palabra clave.
  • Cambiar los nombres de los parámetros del método.
  • Agregar campos eventos o propiedades de instancia (que no son static).

Blazor WebAssembly La recarga en caliente admite los siguientes cambios de código:

  • La mayoría de los cambios en los cuerpos de método, como agregar, quitar y editar variables, expresiones e instrucciones.
  • Cambios en los cuerpos de expresiones lambda y funciones locales.

Los cambios de código siguientes no se admiten para Blazor WebAssembly las aplicaciones:

  • Agregar nuevas expresiones lambda o funciones locales.
  • Añadir un nuevo await operador o una expresión con una yield palabra clave.
  • Cambiar los nombres de los parámetros del método.
  • Cambios fuera de los cuerpos de método.
  • Agregar campos eventos o propiedades de instancia (que no son static).

CLI de .NET

La función Recarga activa se utiliza mediante el comando dotnet watch

dotnet watch

Para forzar que la aplicación se recompile y reinicie, use la combinación de teclado Ctrl+R en el shell de comandos.

Cuando se realiza una edición de código no compatible, denominada edición grosera, dotnet watch te pregunta si quieres reiniciar la aplicación:

  • Sí: reinicia la aplicación.
  • No: no reinicia la aplicación y deja la aplicación en ejecución sin los cambios aplicados.
  • Siempre: reinicia la aplicación según sea necesario cuando se producen modificaciones groseras.
  • Nunca: no reinicia la aplicación y evita mensajes futuros.

Para deshabilitar la compatibilidad con Recarga activa, pase la opción --no-hot-reload al comando dotnet watch:

dotnet watch --no-hot-reload

Deshabilitar Recarga activa

La siguiente configuración en Properties/launchSettings.json deshabilita Recarga activa:

"hotReloadEnabled" : false

WebAssembly Recarga activa (WasmEnableHotReload)

En .NET 10 y versiones posteriores, la propiedad WasmEnableHotReload de MSBuild controla si la infraestructura de recarga en caliente se incluye en la salida de la compilación para aplicaciones .NET WebAssembly, incluyendo tanto Blazor WebAssembly aplicaciones como proyectos que no sean Blazor WebAssembly aplicaciones de navegador (wasmbrowser plantilla). La propiedad se establece en true de forma predeterminada para la configuración Debug.

Establecer la propiedad en false quita las dependencias de Recarga activa del resultado de dotnet build, lo que resulta útil al generar artefactos compatibles con empaquetadores, por ejemplo, para usarlos con webpack o Vite.

Para deshabilitar Recarga activa para aplicaciones WebAssembly, establezca la propiedad false en el archivo de proyecto de la aplicación (.csproj):

<PropertyGroup>
  <WasmEnableHotReload>false</WasmEnableHotReload>
</PropertyGroup>

Para habilitar Recarga activa para una configuración personalizada (que no sea Debug), establezca la propiedad en true:

<PropertyGroup>
  <WasmEnableHotReload>true</WasmEnableHotReload>
</PropertyGroup>

Para obtener más información sobre cómo controlar Recarga activa en Blazor WebAssembly aplicaciones, consulte Depuración de aplicaciones ASP.NET CoreBlazor.

Para obtener más información, consulte los siguientes recursos en la documentación de Visual Studio: