Compartir a través de


Escritura y depuración de código en ejecución con Recarga activa en Visual Studio (C#, Visual Basic, C++)

Recarga activa se conocía anteriormente como Edit and Continue en la documentación de Visual Studio y algunos textos heredados de la interfaz de usuario.

A partir de Visual Studio 2022, la experiencia de 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 la aplicación entre ediciones como sea posible, lo que te permite reducir el tiempo que dedicas a esperar a que las aplicaciones se recompilen, reinicien y vuelvan a navegar a la ubicación anterior donde estabas en la propia aplicación.

Mejoramos la productividad, ya que le permite editar 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 conocido 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

  1. Abra un proyecto basado en un tipo de aplicación compatible. Consulte las aplicaciones admitidas de .NET y C++.

  2. Inicie la aplicación con el depurador asociado mediante F5 o, si se admite, Ctrl+F5.

  3. Abra un archivo de código y cambie el código.

  4. Aplique los cambios de código mediante el Recarga activacaptura de pantalla del icono de Recarga activa. o pulse ALT+F10.

    Captura de pantalla de Recarga activa.

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 MetadataUpdateHandler.

Compatibilidad con aplicaciones de .NET

  • Cuando usas Visual Studio 2022 e inicias tu aplicación con el depurador, la experiencia básica de Recarga activa funciona con la mayoría de los tipos de aplicaciones y versiones de framework de .NET. Esta compatibilidad incluye .NET Framework, .NET Core y .NET 5+ (tanto para C# como para Visual Basic según corresponda). La expectativa en este escenario es que, si usas el depurador, asume que dispones de Recarga activa ¡y pruébalo!
  • Cuando se usa Visual Studio 2022 pero no se usa el depurador (por ejemplo, usando CTRL-F5 para iniciar la aplicación), Recarga activa está disponible cuando se dirige a la mayoría de los tipos de aplicaciones de .NET 6. En este escenario, las aplicaciones que no apuntan a .NET 6+ (es decir, apuntan a .NET 5 o anterior) no admiten el escenario "sin depurador" y deben usar el depurador para obtener soporte de Recarga activa.
  • Al usar 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, de manera más 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 aplicaciones destinadas a .NET 6 juntos le ofrece la experiencia de Recarga activa más eficaz.

En la tabla siguiente se muestra la versión mínima de .NET necesaria para admitir .NET Recarga activa con el depurador asociado (F5) y sin el depurador asociado (Ctrl+F5), en función del tipo de proyecto. se requiere Visual Studio 2022, versión 17.8 o posterior.

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 .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 Recarga activa están 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 .NET Framework

Al usar Visual Studio 2022 e iniciar la aplicación con el depurador, la experiencia básica de Recarga activa funciona con la mayoría de los tipos de aplicaciones y versiones de marco de .NET. Esta compatibilidad incluye .NET Framework, .NET Core y .NET 5+ (tanto para C# como para Visual Basic según corresponda). La expectativa en este escenario es que, si usas el depurador, asume que dispones de Recarga activa ¡y pruébalo!

Compatibilidad con aplicaciones de C++

Al usar Visual Studio 2022 e iniciar tu aplicación con el depurador, puedes recargar en caliente una aplicación nativa de C++ al ejecutarla en el depurador (F5) mediante el botón Recarga en Caliente. Recarga activa también se admite para las aplicaciones creadas mediante proyectos de CMake y OpenFolder.

Para que el proyecto admita Recarga activa, necesita las siguientes opciones:

  • Project > Properties > C/C++ > General >Debug Information Format debe establecerse en "Program Database for Edit and Continue /ZI"
  • Proyecto > Propiedades > Linker > 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 o .NET Framework, al usar el depurador

Al usar Visual Studio 2022 e iniciar la aplicación con el depurador, Recarga activa funciona con la mayoría de los marcos de trabajo de la aplicación.

En cualquier lugar donde tenga .NET y esté utilizando el depurador administrado de Visual Studio, debería obtener compatibilidad básica con Recarga activa. Este hecho significa que incluso proyectos como Azure Functions funcionan muy bien en este escenario.

Nota

De forma predeterminada, algunos proyectos utilizan la depuración en modo mixto, que no admite Recarga activa. Puede modificar esta configuración en configuración del proyecto configurando Propiedades > Project > Depurar > Abrir la interfaz de usuario de los perfiles de inicio de depuración > Habilitar depuración de código nativo en falso.

Visual Studio 2022 con una aplicación de .NET, pero sin usar el depurador

Recarga activa está disponible sin el depurador al dirigirse a 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 deben usar el depurador para obtener acceso a Recarga activa funcionalidad.

Además, no todos los tipos de proyecto admiten actualmente el escenario "sin depurador", consulte Support para aplicaciones de .NET.

Visual Studio 2022 con una aplicación de .NET 6+

Si usas tanto Visual Studio 2022 como aplicaciones que tienen como objetivo .NET 6+, obtendrás las ventajas de la más pulida y capaz experiencia de Recarga activa.

Se admite en este escenario:

  • Aplicaciones Blazor (Server y WebAssembly)
  • Edición de archivos Razor en sitios web de Blazor y ASP.NET Core convencionales
  • Recarga en Caliente CSS
  • XAML Recarga activa
  • Compatibilidad con Recarga activa al ejecutar aplicaciones sin el depurador (como se ha descrito anteriormente con más detalle)

Si apunta a .NET 6+, seguirá recibiendo mejoras en las próximas actualizaciones de Visual Studio 2022, las bandas de funciones de .NET y las versiones principales.

Escenarios admitidos en ASP.NET Core

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 de .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 en cualquier lugar donde Recarga activa se encontraba disponible anteriormente. Para obtener instrucciones más específicas, consulte .NET Recarga activa compatibilidad con ASP.NET Core.

Para ASP.NET Core desarrolladores que tienen como destino .NET 6 o posteriores, 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.
  • CSS Recarga activa: Puede cambiar los archivos CSS mientras se ejecuta la aplicación y los cambios se aplican inmediatamente a la aplicación en ejecución mientras escribe.
  • No Debugger: Obtienes la función Recarga activa al usar Visual Studio para iniciar tu aplicación web sin el depurador (CTRL-F5).

Cambios de .NET admitidos

La experiencia de .NET Recarga activa se basa en el compilador debugger y 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.

Cambios compatibles en .NET Framework

La experiencia de .NET Recarga activa se basa en el compilador debugger y C#. Los cambios de código admitidos (C# y VB) enumeran los tipos de modificaciones admitidas actualmente y posibles mejoras futuras.

Proyectos de .NET y .NET Framework no admitidos

Recarga activa no está disponible en algunas configuraciones de proyecto:

  • Si usa Visual Studio sin el depurador, Recarga activa solo funciona para aplicaciones de .NET destinadas a .NET 6+.
  • Si usa el depurador de Visual Studio para ejecutar la aplicación, pero ha deshabilitado Enable Recarga activa and Edit and Continue when debugging en la configuración, no se admite Recarga activa.
  • 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 nativo de F# o .NET.
  • Algunas optimizaciones de inicio o compilación no se admiten en .NET Recarga activa. Por ejemplo, si el perfil de depuración de tu proyecto está configurado de las siguientes formas, .NET Recarga activa no es compatible:
    • 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 es compatible si en tu archivo de proyecto el PublishReadyToRun está configurado como True para el perfil de depuración.

Para más información, consulte Escenarios no admitidos.

Recarga activa no compatible con F#

Recarga activa, o Editar y Continuar, no es compatible al depurar código de F#. Las modificaciones en el código de F# son posibles durante una sesión de depuración, pero deben evitarse. Los cambios de código no se aplican durante la sesión de depuración. Por lo tanto, las modificaciones realizadas en el código de F# mientras se depuran producirán código fuente que no coincida con el código que se está depurando.

Configuración de Recarga activa

Para habilitar, deshabilitar o configurar Recarga activa, consulte Configure Edit and Continue.

Mensaje de advertencia

Si ve el siguiente cuadro de diálogo, Recarga activa 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 editando, es posible que los cambios o correcciones adicionales puedan hacer que Recarga activa funcione de nuevo.

Captura de pantalla del cuadro de diálogo Aplicar cambios.

Captura de pantalla del cuadro de diálogo Aplicar cambios.

Si selecciona la opción Siempre reconstruir cuando no se puedan aplicar los cambios en el cuadro de diálogo, no volverá a ver el cuadro de diálogo en la sesión actual de Visual Studio, y Visual Studio recompilará y recargará automáticamente en lugar de mostrar el cuadro de diálogo.

Solución de problemas

Si Recarga activa no funciona según lo previsto, compruebe lo siguiente:

  • Compruebe que está ejecutando una aplicación y un escenario admitidos. Algunos tipos de proyecto, depuración en modo mixto, código optimizado y los escenarios de Attach to Process no admiten Recarga activa. Para obtener más información, consulte Escenarios no admitidos.
  • Asegúrese de que la aplicación usa una configuración de Debug y de que Recarga activa esté habilitado en Tools>Options>Debugging>.NET/C++ Recarga activa.
  • Establezca Logging Verbosity en Detailed o Diagnostic para obtener más información en la salida Recarga activa.
  • Abra la ventana Output y, en Show output from, seleccione Recarga activa para revisar los mensajes de diagnóstico.
  • Si una línea aparece como de solo lectura durante la depuración, podría ser una declaración activa en la pila de llamadas o puede que la edición requiera un reinicio.

Para obtener una lista de diagnósticos comunes, consulte mensajes de error de Recarga activa y Edit and Continue. Si el problema persiste y la salida no muestra una causa clara, use Report a Problem para enviar comentarios al equipo de Visual Studio.

Si usa la compresión de respuesta en .NET Core, consulte la información sobre response compression.