Hot Reload para desarrolladores de .NET
Tags: webdev, dotnet, csharp, html
Published: 2021-07-06 19:56:36

¡Hola! Un gusto saludarte. En esta ocasión tendremos la oportunidad de aprender sobre una de las funcionalidades más esperadas por los desarrolladores de .NET: `Hot Reload`. 

###¿Qué es Hot Reload?

Hot Reload, o recarga en caliente en español, nos permite modificar el código fuente de nuestra aplicación mientras esta se encuentra en ejecución y visualizar estos cambios en tiempo real sin necesidad de reiniciar la ejecución. 

###¿Cómo acceder a esta nueva funcionalidad?

Al momento de escribir este artículo (junio de 2021), es posible acceder a .NET Hot Reload desde la versión [16.11 Preview](https://visualstudio.microsoft.com/es/vs/preview/) de Visual Studio 2019. Con esta versión, podremos abrir cualquier proyecto sobre el ecosistema de .NET que sea compatible, y probar esta funcionalidad. 

###Hot Reload en acción

Para probar esta funcionalidad, veamos un ejemplo de una aplicación web con el framework DotVVM sobre ASP.NET, el cual se basa en el patrón MVVM (Modelo, Vista, VistaModelo). 

Los pasos son los siguientes:

+ Abrir el proyecto en Visual Studio.
+ Iniciar la aplicación con el depurador asociado con F5.
+ Abrir el archivo con el código fuente que se desea editar. 
+ Aplicar los cambios en el código.
+ Visualizar la actualización correspondiente. 

Para aplicar los cambios realizados en el código, en Visual Studio 2019 podremos ubicar el botón Hot Reload como se puede visualizar a continuación: 

![Hot Reload Button](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/c4bhqg6n36xghblq2ru5.png)

Este es un ejemplo para los cambios efectuados en una clase en C#:

![GIF Hot Reload C Sharp](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/z2o8vff0pcec8f4nkrwx.gif)

Asimismo, lo podemos aplicar a otros componentes de código fuente, por ejemplo, a las vistas HTML en DotVVM:

![GIF Hot Reload HTML](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/fmhm24fy3qr4t57pqre0.gif)
 
Fabuloso, ¿verdad? Ahora bien, es posible que te preguntes qué sucede cuando nos encontramos con excepciones en tiempo de ejecución o con errores de compilación. Pues bien, en esos escenarios visualizaremos algo como esto: 

![GIF Hot Reload Errors](https://dev-to-uploads.s3.amazonaws.com/uploads/articles/4j77wyyet3icyjpr1ghb.gif)
 
###Limitaciones del Hot Reload

De acuerdo con la documentación de Microsoft, los cambios que se pueden realizar en el código fuente durante una sesión de depuración sin reiniciar la ejecución son los siguientes:

+ Tipos.
+ Iteradores.
+ Expresiones asincrónicas/await.
+ Expresiones LINQ.
+ Lambdas.
+ Objetos dinámicos.

Asimismo, existen cambios no compatibles con esta funcionalidad, a continuación, se pueden visualizar algunos de ellos

+ Cambiar el nombre de los elementos.
+ Eliminación de espacios de nombres, tipos y miembros.
+ Modificación de interfaces.
+ Modificación de firmas de método.

En esta página web se pueden visualizar todos los detalles en cuanto a las limitaciones del Hot Reload en .NET: [https://aka.ms/dotnet/hot-reload](aka.ms/dotnet/hot-reload).

###Aspectos adicionales por comentar

Los ejemplos sobre Hot Reload que acabamos de visualizar fueron aplicados sobre un proyecto con .NET 5. Esto ha sido posible gracias a que hemos utilizado la Preview 16.11 de Visual Studio 2019. 

Ahora bien, Microsoft ha pensado esta funcionalidad principalmente para .NET 6, a diferencia de nuestros ejemplos, podríamos visualizar como se recarga nuestra página web en tiempo real con Hot Reload, asimismo, si quisiéramos utilizar esta funcionalidad en la consola de comandos, por ejemplo, necesitaríamos por lo menos la Preview 4 de .NET 6. 

En la actualidad (junio 2021) podemos ver únicamente de manera preliminar estas características, para el futuro, Microsoft planea obtener toda la potencia de esta característica con .NET 6 (y futuras versiones de .NET) y Visual Studio 2022. Por el momento, es posible mencionar que la nueva versión de .NET será anunciada en la [.NET Conf 2021](https://dotnetconf.net/), la cual, se llevará a cabo en noviembre 9-11 de este año. 

###Gracias por leer

Muchas gracias por leer, espero que este artículo te haya parecido interesante y pueda serte de utilidad en el futuro. Si tienes alguna pregunta o alguna idea que necesites discutir, será un gusto poder colaborarte y juntos intercambiar conocimientos entre sí.

¡Nos vemos en [Twitter](https://twitter.com/esDanielGomez)! O si gustas también puedes escribirme por [Instagram](https://instagram.com/esdanielgomez) o [Telegram](https://t.me/esdanielgomez). :=)