Compartir a través de


Compatibilidad con .NET Hot Reload (Recarga Activa) para 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 se admite para todos los ASP.NET Core en proyectos 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 de código sea para un delegado de middleware en línea.
    • 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 Blazor las aplicaciones, la infraestructura desencadena automáticamente el renderizado de un Razor componente.
  • En las aplicaciones de MVC y Razor Pages, Hot Reload desencadena automáticamente una actualización del navegador.
  • Quitar un Razor atributo de parámetro de componente no hace que el componente 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 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 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:

Blazor WebAssembly 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.
  • Agregar un nuevoawait operador o yield expresión de palabra clave.
  • Cambiar los nombres de los parámetros del método.
  • Cambios fuera de los cuerpos de métodos.
  • Agregar campos de instancia (no-static), eventos o propiedades.

CLI de .NET

La función Hot Reload 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:

  • : 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 Hot Reload

La siguiente configuración en Properties/launchSettings.json deshabilita Hot Reload:

"hotReloadEnabled" : false

Recursos adicionales

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