Escritura y depuración de código en ejecución con recarga activa en Visual Studio (C#, Visual Basic, C++)
A partir de Visual Studio 2022, la experiencia recarga activa en Visual Studio funciona tanto para aplicaciones .NET administradas como para aplicaciones nativas de C++. Independientemente del tipo de aplicación en la que estés trabajando, la intención de Recarga activa es ahorrarte tantos reinicios de aplicación entre ediciones como sea posible, lo que te hace más productivo al reducir el tiempo que dedicas a esperar a que las aplicaciones se recompilen, reinicien, vuelvan a navegar a la ubicación anterior donde estabas en la propia aplicación, et al.
Se mejora la productividad al hacer posible la edición de los archivos de código de la aplicación y aplicar los cambios de código inmediatamente a la aplicación en ejecución, también conocida como Recarga activa. Una vez aplicados los cambios, vuelva a ejecutar el código realizando una acción en la propia aplicación (o a través de algún tipo de temporizador, etc.) y vea los cambios inmediatamente; no se requiere pausa de la aplicación a través de puntos de interrupción.
Actualización del código en ejecución con Recarga activa
Abra un proyecto basado en un tipo de aplicación compatible. Consulte las aplicaciones compatibles con .NET y C++.
Inicie la aplicación con el depurador adjunto mediante F5 o, si se admite, Ctrl+F5.
Abra un archivo de código y cambie el código.
Aplique los cambios de código mediante el botón de Recarga en caliente , o presione ALT+F10.
Para ver los cambios en la interfaz de usuario, el código debe volver a ejecutarse. Por ejemplo, el código subyacente de un botón debe volver a ejecutarse o código que se desencadena a intervalos a través de un temporizador. Como otro ejemplo, ASP.NET Core admite la actualización automática del explorador debido a la funcionalidad de MetadataUpdateHandler.
Compatibilidad con aplicaciones .NET
- Al usar Visual Studio 2022 e iniciar tu aplicación con el depurador, la experiencia básica de Hot Reload funciona con la mayoría de los tipos de aplicaciones de .NET y versiones del entorno. Esta compatibilidad incluye .NET Framework, .NET Core y .NET 5+ (para C# y Visual Basic según corresponda). La expectativa en este escenario es que, si se usa el depurador, hay que suponer que Recarga activa está disponible para usted y pruébalo.
- Cuando se usa Visual Studio 2022, pero no se usa el depurador (por ejemplo, con CTRL-F5 para iniciar la aplicación), Hot Reload está disponible para la mayoría de los tipos de aplicaciones .NET 6. En este escenario, las aplicaciones que no tienen como destino .NET 6+ (es decir, tienen como destino .NET 5 o versiones inferiores) no admiten el escenario "sin depurador" y deben usar el depurador para obtener compatibilidad con Recarga en caliente.
- Cuando usas Visual Studio 2022 con una aplicación de .NET 6+, se admiten la mayoría de los escenarios. Esta compatibilidad no se limita a la nueva característica "sin depurador" mencionada anteriormente. También incluye otras funcionalidades nuevas, como la compatibilidad con la recarga activa de proyectos de Blazor y, por lo general, la edición de archivos de Razor en cualquier aplicación de ASP.NET Core y la recarga activa de CSS. El uso de Visual Studio 2022 y las aplicaciones destinadas a .NET 6 juntos ofrecen la experiencia de recarga activa más eficaz.
En la tabla siguiente se muestran los proyectos que admiten recarga activa de .NET con el depurador asociado (F5) y sin el depurador asociado (Ctrl+F5), según la versión mínima de .NET necesaria para la compatibilidad con Visual Studio 2022 (17.8).
Tipo de aplicación | F5 | Ctrl+F5 | Compatibilidad con MetadataUpdateHandler |
---|---|---|---|
Consola | ✅ | .NET 6 | .NET 6 |
Ejecución en Linux/macOS (Docker y WSL) |
.NET 8 | .NET 6 | .NET 8 |
Ejecución en Arm64 | .NET 7 | .NET 7 | .NET 7 |
WPF (Windows Presentation Foundation) | ✅ | .NET 6 | .NET 6 |
WinForms | ✅ | .NET 6 | .NET 6 |
ASP.NET | ✅ | .NET 6 | .NET 6 |
Servidor Blazor | .NET 6 | .NET 6 | .NET 6 |
WebAssembly de Blazor | .NET 6 | .NET 6 | .NET 6 |
MAUI (WinUI/Android/iOS) |
.NET 6 | -- | -- |
Los tipos de modificaciones que puede realizar con Hot Reload vienen determinados por el tiempo de ejecución y la versión del compilador, no por el método que usó para iniciar la aplicación (F5 o Ctrl+F5).
En las secciones siguientes se proporcionan detalles adicionales.
Compatibilidad con aplicaciones de C++
Al usar Visual Studio 2022 e iniciar su aplicación con el depurador, puede recargar rápidamente una aplicación nativa de C++ al ejecutarla bajo el depurador (F5) mediante el botón de recarga activa . Hot Reload también se admite para aplicaciones construidas con CMake y proyectos de OpenFolder.
Para que tu proyecto admita Hot Reload, necesitas las siguientes opciones:
- Proyecto > Propiedades > C/C++ > General >Formato de información de depuración se debe establecer en "Base de datos de programa para Editar y continuar
/ZI
" - Proyecto > Propiedades > Enlazador > General >Habilitar vinculación incremental se debe establecer en "Sí
/INCREMENTAL
"
Para saber qué ediciones se admiten, consulte Cambios de código admitidos de C++.
Visual Studio 2022 con una aplicación .NET, al usar el depurador
Al usar Visual Studio 2022 e iniciar la aplicación con el depurador, Hot Reload funciona con la mayoría de los marcos de trabajo de aplicaciones.
En cualquier lugar que tenga .NET y use el depurador Visual Studio administrado, debe obtener compatibilidad básica de Recarga activa. Este hecho significa que incluso proyectos como Azure Functions funcionan muy bien en este escenario.
Nota
De forma predeterminada, algunos proyectos usan la depuración en modo mixto, que no admite Recarga activa. Para modificar esta opción en la configuración del proyecto, establezca Proyecto > Propiedades > Depurar > Abrir interfaz de usuario de perfiles de inicio de depuración > Habilitar depuración de código nativo en falso.
Visual Studio 2022 con una aplicación .NET, pero no con el depurador
Recarga activa está disponible sin el depurador cuando el destino es la mayoría de los tipos de aplicaciones de .NET 6+.
Esta característica es exclusiva de .NET 6+. Estas aplicaciones que no tienen como destino .NET 6+ (es decir, .NET 5 o una versión inferior) no admitirán el escenario "sin depurador" y deben usar el depurador para obtener acceso a la funcionalidad de Recarga activa.
Además, no todos los tipos de proyecto admiten actualmente el escenario "sin depurador", consulte Compatibilidad con aplicaciones .NET.
Visual Studio 2022 con una aplicación de .NET 6+
Si utiliza tanto Visual Studio 2022 como trabaja en aplicaciones compatibles con .NET 6+, obtendrá las ventajas de la experiencia Hot Reload más pulida y capaz.
Se admite en este escenario:
- Aplicaciones Blazor (Server y WebAssembly)
- Edición de archivos de Razor tanto en Blazor como en sitios web de ASP.NET Core normales
- Recarga activa de CSS
- Recarga activa de XAML
- Compatibilidad con Hot Reload al ejecutar aplicaciones sin usar el depurador (como se ha descrito anteriormente con más detalle)
Si tiene como destino .NET 6, seguirá recibiendo mejoras en las próximas actualizaciones de Visual Studio 2022 y en la banda de características y las versiones principales de .NET.
Escenarios principales de ASP.NET admitidos
La experiencia básica de recarga activa es compatible con muchos escenarios de ASP.NET. La característica más disponible es la capacidad de cambiar el código subyacente y otros archivos de clase .NET para la mayoría de los tipos de aplicaciones web. Esta característica funciona mientras se usa el depurador de Visual Studio y está disponible donde Hot Reload estaba disponible anteriormente. Para obtener orientación más específica, consulte el artículo sobre la compatibilidad de Recarga activa de .NET con ASP.NET Core.
Para los desarrolladores de ASP.NET Core que tienen como destino .NET 6+, hay funcionalidades adicionales que no están disponibles para versiones anteriores de .NET. Estas funcionalidades incluyen:
- CSHTML: editar un archivo CSHTML de Razor admite muchos tipos de ediciones.
- Actualización del explorador: la edición de un archivo Razor ahora actualizará automáticamente los cambios en el explorador web al realizar la depuración. Esta característica solo estaba disponible anteriormente al iniciar la aplicación sin el depurador.
- Recarga activa de CSS: ahora es posible cambiar los archivos CSS mientras se ejecuta la aplicación y los cambios se aplicarán inmediatamente a la aplicación en ejecución a medida que escriba.
- Sin depurador: se obtiene Recarga activa al usar Visual Studio para iniciar la aplicación web sin el depurador (CTRL-F5).
Cambios soportados en .NET
La experiencia de Recarga activa de .NET tiene la tecnología del depurador y el compilador de C# (Roslyn). Roslyn admite modificaciones y admite cambios de código (C# y VB) enumera los tipos de modificaciones actualmente admitidas y posibles mejoras futuras.
Proyectos de .NET no admitidos
La "Hot Reload" no está disponible en algunas configuraciones de proyecto.
- Si usa Visual Studio sin el depurador, Hot Reload solo funciona para las aplicaciones de .NET compatibles con .NET 6+.
- Si usa el depurador de Visual Studio para ejecutar su aplicación, pero ha deshabilitado
Enable Hot Reload and Edit and Continue when debugging
en su configuración, Hot Reload no es compatible. - No se admiten configuraciones de compilación de lanzamiento o personalizadas. El proyecto debe usar la configuración de compilación de
Debug
. - Si tiene como destino un proyecto de F# o .NET Native.
- Algunas optimizaciones de inicio o compilación no se admiten en .NET Hot Reload. Por ejemplo, si el perfil de depuración del proyecto se configura de las maneras siguientes, no se admite Recarga activa de .NET:
- El recorte está habilitado para el proyecto. Por ejemplo, no se admite si
PublishTrimmed
se establece en True en el archivo de proyecto para el perfil de depuración. - ReadyToRun está habilitado para su proyecto. Por ejemplo, no se admite si
PublishReadyToRun
se establece en True en el archivo de proyecto para el perfil de depuración.
- El recorte está habilitado para el proyecto. Por ejemplo, no se admite si
Consulte escenarios no compatibles para obtener más información.
Configuración de Recarga activa
Para habilitar, deshabilitar o configurar Recarga activa, consulte Configuración de Editar y continuar.
Mensaje de advertencia
Si ve el siguiente cuadro de diálogo, Hot Reload no puede aplicar las modificaciones actuales sin reiniciar. Puede elegir recompilar la aplicación y aplicar cambios (reinicio) o continuar con la edición. Si se vuelve a compilar, se pierde todo el estado de la aplicación. Si continúa con la edición, es posible que Recarga activa vuelva a funcionar si lleva a cabo más cambios o correcciones.
Si selecciona la opción del cuadro de diálogo Volver a generar siempre cuando no se puedan aplicar cambios, no volverá a ver el cuadro de diálogo en la sesión actual de Visual Studio, y Visual Studio reconstruirá y recargará automáticamente en lugar de mostrar el cuadro de diálogo.
Solución de problemas
Se recomienda encarecidamente examinar la ventana Salida de Recarga activa, ya que contiene información detallada de diagnóstico relativa a la sesión de Recarga activa.
Si usa la compresión de respuesta en .NET Core, vea la información sobre la compresión de respuesta.