Recarga activa de XAML para Xamarin.Forms

Recarga activa de XAML se conecta al flujo de trabajo existente para aumentar la productividad y ahorrar tiempo. Sin la recarga activa de XAML, tendrá que compilar e implementar su aplicación cada vez que desee ver un cambio en XAML. Con la recarga activa, al guardar el archivo XAML, los cambios se reflejan en directo en la aplicación en ejecución. Además, el estado de navegación y los datos se mantendrán, lo que te permite iterar rápidamente en la interfaz de usuario sin perder tu lugar en la aplicación. Por lo tanto, con la recarga activa de XAML, dedicarás menos tiempo a volver a generar e implementar las aplicaciones para validar los cambios de la interfaz de usuario.

Nota:

Si está escribiendo una aplicación UWP o WPF nativa, y no utiliza Xamarin.Forms, consulte Recarga activa de XAML para UWP y WPF.

Requisitos del sistema

IDE/Framework Versión mínima requerida
Visual Studio 2019 16.9 para el modo de solo cambios, 16.4 para el modo de página completa
Visual Studio 2019 para Mac 8.9 para el modo de solo cambios, 8.4 para el modo de página completa
Xamarin.Forms 5.0.0.2012 para el modo de solo cambios; 4.1 para el modo de página completa

Habilitar recarga activa de XAML para Xamarin.Forms

Si se parte de una plantilla, la recarga activa de XAML está activada de forma predeterminada y el proyecto está configurado para funcionar sin ninguna configuración adicional. Depure la aplicación Android, iOS o UWP en un emulador o dispositivo físico y cambie el XAML para desencadenar una recarga activa de XAML.

Si está trabajando a partir de una solución Xamarin.Forms existente, no es necesaria ninguna instalación adicional para utilizar la recarga activa de XAML, pero es posible que tenga que volver a comprobar la configuración para garantizar la mejor experiencia. En primer lugar, habilite en la configuración del IDE:

  • En Windows, active la casilla Habilitar recarga activa de XAML (y las plataformas necesarias) en Herramientas>Opciones>Depuración>Recarga activa.
    • En versiones anteriores de Visual Studio 2019, la casilla está en Herramientas>Opciones>Xamarin>Recarga activa.
  • En Mac, active la casilla Habilitar recarga activa de Xamarin en Visual Studio>Preferencias>Herramientas para Xamarin>Recarga activa de XAML.
    • En versiones anteriores de Visual Studio para Mac, la casilla está en Visual Studio>Preferencias>Proyectos>Recarga activa de Xamarin.

A continuación, en la configuración de compilación de Android e iOS, compruebe que el enlazador está configurado como "No vincular" o "Vincular ninguno". Para usar la recarga activa de XAML con un dispositivo iOS físico, también tiene que comprobar Habilitar el intérprete mono (Visual Studio 16.4 y versiones posteriores) o agregar --interpreter a su args mtouch adicionales (Visual Studio 16.3 y versiones posteriores).

Puede utilizar el siguiente diagrama de flujo para comprobar la configuración de su proyecto existente para su uso con la recarga activa de XAML:

XAML Hot Reload Setup

Modos de recarga activa

La recarga activa de XAML puede funcionar en dos modos diferentes: el más reciente, solo cambios, y el más antiguo, página completa.

Desde Visual Studio 16.9 y Visual Studio para Mac 8.9, el comportamiento predeterminado es para que solo se use el modo de cambios para todas las aplicaciones que usan Xamarin.Forms 5.0 o versiones posteriores. Para versiones anteriores de Xamarin.Forms, se usa el modo de página completa. Sin embargo, puedes forzar el uso del modo de página completa para todas las aplicaciones en la configuración del IDE de recarga activa (opciones deHerramientas>Opciones>Depuración>Recarga activa en Windows o Visual Studio>Preferencias>Herramientas para Xamarin>Recarga activa de XAML en Mac).

El modo de solo cambios analiza la XAML para ver exactamente qué ha cambiado al realizar una modificación, y envía solo esos cambios a la aplicación en ejecución. Esta es la misma tecnología que se usa para la recarga activa de WPF y UWP. Conserva el estado de la interfaz de usuario, ya que no recrea la interfaz de toda la página, sino que solo actualiza las propiedades modificadas de los controles afectados por las modificaciones. El modo solo cambios también permite utilizar el Árbol visual dinámico.

De forma predeterminada, con el modo solo cambios no es necesario guardar el archivo para ver los cambios: las actualizaciones se aplican inmediatamente, a medida que se escribe. Sin embargo, puede cambiar este comportamiento para actualizar solo en el guardado de archivos. Esto se puede conseguir marcando la casilla Aplicar recarga activa de XAML al guardar el documento (actualmente solo disponible en Windows) en la configuración de recarga activa del IDE. Actualizar solo al guardar el documento a veces puede ser útil si realiza actualizaciones XAML más grandes y no desea que se muestren hasta que se hayan completado.

Modo de página completa envía el archivo XAML completo a la aplicación en ejecución después de realizar modificaciones y guardar. A continuación, la aplicación en ejecución recarga la página, recreando sus controles: verá cómo se actualiza la interfaz de usuario.

El modo solo cambios es el futuro de la recarga activa y recomendamos utilizarlo siempre que sea posible. Es rápido, conserva el estado de la interfaz de usuario y admite Árbol visual dinámico. El modo de página completa sigue estando disponible para las aplicaciones que aún no se han actualizado a la Xamarin.Forms versión 5.0.

Nota:

Tendrá que reiniciar la sesión de depuración cuando cambie de modo.

Errores de XAML

Solo cambia el modo: si realiza un cambio que el analizador de recarga activa de XAML considera no válido, mostrará el error subrayado en el editor y lo incluirá en la ventana de errores. Estos errores de recarga activa tienen un código de error que empieza por "XHR" (para recarga activa de XAML). Si hay algún error de este tipo en la página, la recarga activa no aplicará los cambios, aunque se hayan realizado en otras partes de la página. Corrija todos los errores para que la recarga activa vuelva a funcionar en la página.

Modo página completa: Si realiza un cambio que la recarga activa de XAML no puede recargar, mostrará el error subrayado en el editor y lo incluirá en la ventana de errores. Estos cambios, conocidos como modificaciones groseras, incluyen escribir mal la XAML o conectar un control a un controlador de eventos que no existe. Incluso con una modificación grosera, puede seguir recargando sin reiniciar la aplicación: haga otro cambio en otra parte del archivo XAML y pulse guardar. La modificación grosera no se recargará, pero los demás cambios se seguirán aplicando.

Recargar en varias plataformas a la vez

La recarga activa de XAML admite la depuración simultánea en Visual Studio y Visual Studio para Mac. Puede implementar un destino de Android y iOS al mismo tiempo para ver los cambios reflejados en ambas plataformas a la vez. Para depurar en varias plataformas, consulte:

Limitaciones conocidas

  • Actualmente no se admiten Xamarin.Forms objetivos distintos de Android, iOS y UWP (por ejemplo, macOS).
  • El uso de [XamlCompilation(XamlCompilationOptions.Skip)], deshabilitar la compilación XAML, no se admite y puede causar problemas con el árbol visual dinámico.
  • No puedes agregar, quitar ni cambiar el nombre de archivos ni paquetes NuGet durante una sesión de recarga activa de XAML. Si agregas o quitas un archivo o un paquete NuGet, recompila y vuelve a implementar la aplicación para seguir usando la recarga activa de XAML.
  • Establezca el enlazador en No vincular o Vincular ninguno para obtener la mejor experiencia. La configuración de solo Link SDK funciona la mayoría de las veces, pero puede fallar en ciertos casos. La configuración del enlazador se encuentra en las opciones de compilación de Android e iOS.
  • La depuración en un iPhone físico requiere que el intérprete utilice la recarga activa de XAML. Para ello, abra la configuración del proyecto, seleccione la pestaña Compilación de iOS y asegúrese de que Habilitar el intérprete mono está habilitado. Es posible que deba cambiar la opción Plataforma en la parte superior de la página de propiedades para iPhone.
  • La recarga activa de XAML no puede recargar código de C#, incluidos controladores de eventos, controles personalizados, código subyacente de página y clases adicionales.

Solución de problemas

  • Muestre la salida de recarga activa de XAML para ver los mensajes de estado, que pueden ayudar en la solución de problemas:
    • Windows: mostrar salida con Ver>Salida y seleccionar Recarga activa de Xamarin en Mostrar salida de: en la parte superior
    • Mac: mantenga el puntero sobre Recarga activa de XAML en la barra de estado para mostrar ese pad
  • Si el recarga activa de XAML no se puede inicializar:
    • Actualice la versión de Xamarin.Forms.
    • Asegúrese de que está en la versión más reciente del IDE.
    • Establezca la configuración de Android o iOS Linker en No vincular en la configuración de compilación del proyecto.
  • Si no ocurre nada al guardar el archivo XAML, asegúrese de que la recarga activa de XAML está habilitada en el IDE.
  • Si está depurando en un iPhone físico y su aplicación deja de responder, compruebe que el intérprete está habilitado. Para activarlo, marque Habilitar el intérprete mono (Visual Studio 16.4/8.4 y versiones posteriores) o agregue --interpreter al campo Argumentos mtouch adicionales (Visual Studio 16.3/8.3 y versiones anteriores) en la configuración de compilación de iOS.

Para informar de un error, use Ayuda>Enviar comentarios>Informar de un problema en Windows, y Ayuda>Informar de un problema en Mac.