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 de .NET y C++ .
Inicie la aplicación con el depurador asociado 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 con el botón Recarga activa 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 de framework. 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, mediante CTRL-F5 para iniciar la aplicación), Recarga activa está disponible cuando el destino es la mayoría de los tipos de aplicaciones de .NET 6. En este escenario, las aplicaciones que no están dirigidas a .NET 6+ (es decir, que están dirigidas a .NET 5 o versiones anteriores) no admiten el escenario sin uso del depurador y deben utilizar el depurador para obtener compatibilidad con la función de Hot Reload.
- Si se usa Visual Studio 2022 con una aplicación .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 |
Funcionando 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 la aplicación con el depurador, puede recargar en caliente una aplicación nativa de C++ cuando se ejecuta bajo el depurador (F5) utilizando el botón de Hot Reload. Hot Reload también se admite para aplicaciones creadas con proyectos de CMake y 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 ver las modificaciones admitidas, 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 frameworks 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, aunque sin utilizar 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+. Esas aplicaciones que no tienen como destino .NET 6+ (es decir, tienen como destino .NET 5 o inferior) no admiten el escenario "sin depurador" y es obligatorio usar el depurador para obtener acceso a la funcionalidad Hot Reload.
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 destinadas a .NET 6+, obtendrá las ventajas de la experiencia más pulida y efectiva de Hot Reload.
Se admite en este escenario:
- Aplicaciones Blazor (Server y WebAssembly)
- Edición de archivos Razor en sitios web de Blazor y en sitios web normales de ASP.NET Core.
- Recarga activa de CSS
- Recarga activa de XAML
- Compatibilidad con Hot Reload al ejecutar aplicaciones sin el depurador, tal como se describió anteriormente con más detalle.
Si utiliza .NET 6+, seguirá recibiendo mejoras en las próximas actualizaciones de Visual Studio 2022, así como en los grupos de características de .NET y las versiones principales.
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á presente 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: Obtienes soporte para Hot Reload al usar Visual Studio para iniciar la aplicación web sin usar el depurador (CTRL-F5).
Cambios en .NET admitidos
La experiencia de Recarga activa de .NET tiene la tecnología del depurador y el compilador de C# (Roslyn). En Ediciones admitidas de Roslyn y Cambios de código admitidos (C# and VB) se enumeran los tipos de ediciones compatibles actualmente y las posibles mejoras futuras.
Proyectos de .NET no admitidos
Hot Reload no está disponible en algunas configuraciones de proyecto.
- Si utiliza Visual Studio sin el depurador, Hot Reload solo funciona para aplicaciones .NET dirigidas a .NET 6+.
- Si usa el depurador de Visual Studio para ejecutar la aplicación, pero ha deshabilitado
Enable Hot Reload and Edit and Continue when debugging
en las configuraciones, Hot Reload no es compatible. - No se admiten configuraciones de compilación personalizadas o de lanzamiento. 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 el Hot Reload de .NET. 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 es compatible si en tu archivo de proyecto el
PublishTrimmed
está configurado como True para el perfil de depuración. - ReadyToRun está habilitado para tu 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 es compatible si en tu archivo de proyecto el
Para más información, consulte Escenarios no admitidos.
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 Recompilar siempre cuando no se puedan aplicar cambios del cuadro de diálogo, no volverá a ver el cuadro de diálogo en la sesión actual de Visual Studio y Visual Studio se volverá a generar y a cargar 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.