Recarga en vivo de Xamarin (versión preliminar)Xamarin Live Reload (Preview)

Nota

La versión preliminar de Xamarin Live Reload ha finalizado y queremos dar las gracias a todos por sus sugerencias y comentarios.The preview of Xamarin Live Reload has ended, and we want to thank everyone for your feedback and comments. Lea nuestra plan para Visual Studio de 2019 obtener más información sobre las nuevas características de productividad que estamos trabajando para Xamarin.Forms.Please read through our roadmap for Visual Studio 2019 to learn more about new productivity features that we are working on for Xamarin.Forms. Esta extensión seguirá estando disponible para Visual Studio 2017, pero no se recibe las actualizaciones futuras.This extension will remain available for Visual Studio 2017, but will not be receiving future updates.

Recarga de Xamarin Live permite realizar cambios en el XAML y ver que se reflejen en directo, sin necesidad de otra compilación e implementar.Xamarin Live Reload enables you to make changes to your XAML and see them reflected live, without requiring another compile and deploy. Los cambios realizados en el XAML se implementará en Guardar y se refleja en el destino de implementación.Any changes made to your XAML will be redeployed on save and reflected on your deploy target.

RequisitosRequirements

IntroducciónGetting Started

1. Instalar la recarga en vivo de Xamarin desde Visual Studio Marketplace1. Install Xamarin Live Reload from the Visual Studio Marketplace

Recarga en vivo de Xamarin se distribuyen a través de Visual Studio Marketplace.Xamarin Live Reload is distributed via the Visual Studio Marketplace. Para instalar la extensión, visite la página recarga en vivo de Xamarin en Visual Studio Marketplace sitio Web y haga clic en descargar.To install the extension, visit the Xamarin Live Reload page on the Visual Studio Marketplace website and click Download.

Abra el .vsix que se descarga y haga clic en instalar.Open the .vsix that is downloaded, and click Install.

Confirmación de Xamarin Live Reload instalador de Visual Studio

Como alternativa, puede buscar en el Online pestaña en el extensiones y actualizaciones diálogo dentro de Visual Studio.Alternatively, you can search for it in the Online tab in the Extensions and Updates dialog inside Visual Studio.

2. Configurar la aplicación para usar la recarga en vivo2. Configure your app to use Live Reload

Adición de recarga en vivo a las aplicaciones móviles existentes puede hacerse en tres pasos:Adding Live Reload to existing mobile apps can be done in three steps:

  1. Asegúrese de que todos los proyectos se actualizan para usar Xamarin.Forms 3.0.0 o posterior o superior.Ensure all projects are updated to use Xamarin.Forms 3.0.0 or above or above.

  2. Agregar el Xamarin.LiveReload paquete NuGet:Add the Xamarin.LiveReload NuGet package:

    a.a. .NET standard : instalar el Xamarin.LiveReload NuGet en la biblioteca de .NET Standard 2.0..NET Standard – Install the Xamarin.LiveReload NuGet into your .NET Standard 2.0 library. Esto no debe instalarse en los proyectos de plataforma.This does not need to be installed in your platform projects. Asegúrese de que el origen del paquete está establecido en todas.Ensure that the Package source is set to All.

    b.b. Proyectos compartidos : instalar el Xamarin.LiveReload NuGet en todos los proyectos de plataforma (por ejemplo, Android, iOS, UWP, etcetera.).Shared Projects – Install the Xamarin.LiveReload NuGet into all platform projects (such as Android, iOS, UWP, etc.). Asegúrese de que el origen del paquete está establecido en todas.Ensure that the Package source is set to All.

    Agregar paquete NuGet de Xamarin la recarga en vivo con el Administrador de paquetes de NuGetAdd Xamarin Live Reload NuGet with NuGet Package Manager

  3. Agregar LiveReload.Init(); al constructor en el Application clase, como se muestra en el siguiente fragmento de código:Add LiveReload.Init(); to the constructor in the Application class, as shown in the following code snippet:

public partial class App : Application
{
    public App ()
    {
        // Initialize Live Reload.
        #if DEBUG
        LiveReload.Init();
        #endif
        
        InitializeComponent();
        MainPage = new MainPage();
    }
}

3. Iniciar la recarga en vivo3. Start live reloading

Compile e implemente la aplicación.Compile and deploy your application. Una vez implementado la aplicación, abra un archivo XAML, realizar algunos cambios y guarde el archivo.Once the app is the deployed, open a XAML file, make some changes, and save the file. Se volvió a implementar los cambios en el destino de implementación.Your changes are redeployed to the deployment target.

Live funciona de volver a cargar con los cambios realizados en cualquier archivo XAML.Live Reload works with changes to any XAML file. Los cambios realizados en C# o agregar y quitar paquetes de NuGet requiere una nueva compilación e implementación para que surta efecto.Changes to C# or adding/removing NuGet packages requires a new build and deploy to take effect.

Preguntas más frecuentesFrequently Asked Questions

¿Hay recarga en vivo de Xamarin en Visual Studio para Mac?Is Xamarin Live Reload available on Visual Studio for Mac?

No, la versión preliminar de Xamarin Live Reload solo está disponible para Visual Studio 2017.No, preview release of Xamarin Live Reload is only available for Visual Studio 2017.

¿Esto funciona con todas las bibliotecas, como Prism?Does this work with all libraries, such as Prism?

Dado que se compila la aplicación, recarga en vivo funciona con todas las bibliotecas, como Prism y bibliotecas de controles de terceros, como Telerik, Infragistics, Syncfusion, ArcGIS, GrapeCity y otros proveedores de control.Because your app is compiled, Live Reload works with all libraries, such as Prism, and third-party control libraries, such as Telerik, Infragistics, Syncfusion, ArcGIS, GrapeCity, and other control vendors.

¿Qué cambios recarga en vivo volver a implementar?What changes does Live Reload redeploy?

La recarga en vivo sólo aplica a los cambios realizados en XAML o CSS.Live Reload only applies changes made to XAML or CSS. Si realiza cambios en un archivo de C#, se deberán volver a compilar.If you make changes to a C# file, a recompile will be required.

¿Qué plataformas son compatibles?What platforms are supported?

La recarga en vivo funciona en cualquier plataforma compatible con Xamarin.Forms, incluidos Android, iOS y UWP.Live Reload works on any platform supported by Xamarin.Forms, including Android, iOS, and UWP.

¿Esto funciona en los emuladores, simuladores y dispositivos físicos?Does this work on emulators, simulators, and physical devices?

Sí, recarga en vivo funciona con todos los destinos de implementación válido, como los emuladores de Android, simuladores de iOS y dispositivos físicos.Yes, Live Reload works with all valid deployment targets, including Android emulators, iOS simulators, and physical devices. Implementación en un dispositivo requiere que el dispositivo y el equipo esté en la misma red Wi-Fi.Deployment to a device requires that the device and computer be on the same Wi-Fi network.

¿Esto funciona con redes corporativas?Does this work with corporate networks?

Si está depurando en un emulador de Android o el simulador de iOS, recarga en vivo usa localhost para comunicarse.If you are debugging to an Android emulator or iOS simulator, Live Reload uses localhost to communicate. Si desea implementar en un dispositivo, el dispositivo y el equipo deben estar en la misma red Wi-Fi.If you wish to deploy to a device, the device and computer need to be on the same Wi-Fi network. En escenarios donde esto no es posible, puede configurar su propio servidor de Live Reload, lo que le permitirá a la recarga en vivo, independientemente de la configuración de conectividad de red.In scenarios where this is not possible, you can configure your own Live Reload server, which will enable you to Live Reload, regardless of network connectivity settings.

¿Necesita depurar la aplicación?Does it require debugging the app?

No.No. De hecho, incluso puede iniciar sus destinos aplicaciones compatibles (Android, iOS y UWP) en cualquier número de dispositivos o emuladores o simuladores y verlos todos actualizar a la vez.In fact, you can even start all your supported application targets (Android, iOS, and UWP) on any number of devices or simulators/emulators and see them all update at once.

LimitacionesLimitations

  • Se admite la recarga sólo de XAML.Only reloading of XAML is supported.
  • Estado de la interfaz de usuario no puede mantenerse entre las nuevas implementaciones, a menos que use MVVM.UI state may not be maintained between redeploys, unless using MVVM.

Problemas conocidosKnown Issues

  • Solo se admite en Visual Studio.Only supported in Visual Studio.
  • Vinculación debe establecerse en no vincular o vincular solo SDK de marcoLinking must be set to Don't Link or Link Framework SDKs Only
  • Volver a cargar recursos de toda la aplicación (es decir, App.xaml o compartir los diccionarios de recursos), se restablece la navegación de la aplicación.Reloading app-wide resources (i.e. App.xaml or shared resource dictionaries), app navigation is reset.
  • Recarga de ContentView actualmente requiere volver a cargar la página contenedora.Reloading of ContentView currently requires reloading the containing page.
  • Elementos que contienen AutomationId pueden producir un error de volver a cargar.Elements containing AutomationId may cause a reload failure.
  • Editar XAML mientras la depuración de UWP puede provocar un bloqueo en tiempo de ejecución.Editing XAML while debugging UWP may cause a runtime crash. Solución: Use iniciar sin depurar (CTRL+F5) en lugar de Iniciar depuración (F5).Workaround: Use Start without Debugging (Ctrl + F5) instead of Start Debugging (F5).

Solución de problemasTroubleshooting

Códigos de errorError codes

  • XLR001: El proyecto actual hace referencia a la versión del paquete NuGet 'Xamarin.LiveReload' [versión] pero la extensión de Xamarin Live Reload requiere la versión [versión].XLR001: The current project references 'Xamarin.LiveReload' NuGet package version '[VERSION]' but the Xamarin Live Reload extension requires version '[VERSION]'.

    Con el fin de permitir la iteración rápida y evolución de la característica Live Reload, el paquete nuget y la extensión de Visual Studio deben coincidir exactamente.In order to allow rapid iteration and evolution of the Live Reload feature, the nuget package and the Visual Studio extension must match exactly. Actualice el paquete nuget a la misma versión de la extensión que ha instalado.Update your nuget package to the same version of the extension you have installed.

  • XLR002: La recarga en vivo requiere al menos la propiedad 'MqttHostname' al compilar desde la línea de comandos. Como alternativa, puede establecer 'EnableLiveReload' en 'false' para deshabilitar la característica.XLR002: Live Reload requires at least the 'MqttHostname' property when building from the command line. Alternatively, set 'EnableLiveReload' to 'false' to disable the feature.

    Las propiedades requeridas por la recarga en vivo no están disponibles al compilar desde la línea de comandos (o en la integración continua) y, por lo tanto, se debe proporcionar explícitamente.The properties required by Live Reload are not available when building from the command line (or in continuous integration), and must therefore be provided explicitly.

  • XLR003: Paquete de nuget recarga en vivo requiere la instalación de la extensión de Xamarin Live volver a cargar Visual Studio.XLR003: Live Reload nuget package requires installing the Xamarin Live Reload Visual Studio extension.

    Ha intentado compilar un proyecto que hace referencia al paquete de nuget recarga en vivo, pero no está instalada la extensión Visual.Attempted to build a project that references the Live Reload nuget package but the Visual Extension is not installed.

  • Excepción al cargar los ensamblados: System.IO.FileNotFoundException: No se pudo cargar el ensamblado ' Xamarin.Live.Reload, Version = 0.3.27.0, Culture = neutral, PublicKeyToken ='.Exception while loading assemblies: System.IO.FileNotFoundException: Could not load assembly 'Xamarin.Live.Reload, Version=0.3.27.0, Culture=neutral, PublicKeyToken='.

    Debe usar el proyecto host PackageReference en lugar de packages.configThe host project should be using PackageReference instead of packages.config

No conecta aplicaciónApp doesn't connect

Cuando se compila la aplicación, la información de Herramientas > Opciones > Xamarin > recarga en vivo (nombre, puerto y cifrado de claves de host) se incrustan en la aplicación, así que, cuando LiveReload.Init() se ejecuta ningún emparejamiento o la configuración es es necesario para la conexión se realice correctamente.When the application is built, the information from Tools > Options > Xamarin > Live Reload (host name, port and encryption keys) are embedded in the app, so that when LiveReload.Init() runs, no pairing or configuration is necessary for the connection to succeed.

Aparte de problemas de red normales (firewall, el dispositivo en una red diferente), la razón principal por que la aplicación no puede conectarse correctamente IDE es porque su configuración es diferente de Visual Studio.Other than normal networking problems (firewall, device on a different network), the main reason the app may not successfully connect IDE is because its configuration differs from the one in Visual Studio. Esto puede ocurrir si:This may happen if:

  • Se compiló la aplicación en un equipo diferente.App was compiled on a different machine.
  • Aplicación se compilan e implementan en una sesión diferente de Visual Studio, y generar automáticamente las claves de cifrado está activada (valor predeterminado) Herramientas > Opciones > Xamarin > Live Reload.App was compiled and deployed in a different Visual Studio session, and Auto-generate encryption keys is checked (the default) in Tools > Options > Xamarin > Live Reload.
  • Configuración de Visual Studio se han cambiado (es decir, claves de nombre de host, puerto o cifrado), pero la aplicación no se compiló y volver a implementarlo.Visual Studio settings were changed (i.e. hostname, port or encryption keys) but the app was not built and deployed again.

Estos casos se resuelven al generar e implementar la aplicación de nuevo.These cases are all solved by building and deploying the app again.

Desinstalar Preview 1Uninstalling Preview 1

Si tiene una versión preliminar anterior y tiene problemas para desinstalarlo, siga estos pasos:If you have an older preview and you have problems uninstalling it, follow these steps:

  1. Elimine la carpeta C:\Program Files (x86) \Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\Extensions\Xamarin\LiveReload (Nota: reemplace "Enterprise" con la edición instalada y "Vista previa" con "2017" if, instala un estables frente a)Delete the folder C:\Program Files (x86)\Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\Extensions\Xamarin\LiveReload (NOTE: replace "Enterprise" with your installed edition, and "Preview" with "2017" if you installed to a stable VS)
  2. Abra un símbolo para que Visual Studio y ejecute devenv /updateconfiguration.Open a Developer command prompt for that Visual Studio and run devenv /updateconfiguration.

Sugerencias y trucosTips & Tricks

  • Siempre que no cambie la configuración de la recarga en vivo (incluidas las claves de cifrado, por ejemplo, si se desactiva generar automáticamente las claves de cifrado) y compilar desde el mismo equipo, no necesita para compilar e implementar la aplicación después de la inicial implementar, a menos que cambie el código o dependencias.As long as the Live Reload settings don't change (including the encryption keys, such as if you turn off Auto-generate encryption keys) and you build from the same machine, you don't need to build and deploy the app after the initial deploy, unless you change code or dependencies. Solo pueden iniciar nuevamente una aplicación implementada anteriormente y se conectará al último host usado.You can just launch again a previously deployed app and it will connect to the last host used.

  • No hay ninguna limitación en cuántos dispositivos puede conectarse a la misma sesión de Visual Studio.There is no limitation on how many devices you can connect to the same Visual Studio session. Se puede implementar e iniciar la aplicación en dispositivos o simuladores tantos según sea necesario para ver el trabajo de recargando en vivo en todos ellos al mismo tiempo.You can deploy and start the app in as many devices/simulators as necessary to see the live reloading working on all of them at the same time.

  • La recarga en vivo sólo se volverá a cargar la parte de la interfaz de usuario de la aplicación, pero tampoco no volver a crear las páginas, ni lo reemplace su modelo de vista (o contexto de enlace).Live Reload will only reload the user interface portion of your app, but it does not re-create your pages, neither does it replace your view model (or binding context). Esto significa que el todo siempre se conserva el estado de la aplicación a través de recarga, incluidas las dependencias insertadas.This means the whole app state is always preserved across reloads, including your injected dependencies.

Servidor de la recarga en vivoLive Reload Server

En escenarios donde una conexión desde la aplicación en ejecución en el equipo (tal como se indica mediante el uso de localhost o 127.0.0.1 en Herramientas > Opciones > Xamarin > Live Reload) no es posible (es decir, firewalls y redes diferentes), Puede configurar un servidor remoto en su lugar, lo que el IDE y la aplicación conectar a.In scenarios where a connection from the running app to your machine (as denoted by using localhost or 127.0.0.1 in Tools > Options > Xamarin > Live Reload) is not possible (i.e. firewalls, different networks), you can configure a remote server instead, which both the IDE and the app will conect to.

La recarga en vivo utiliza la norma protocolo MQTT para intercambiar mensajes y, por lo tanto, puede comunicarse con servidores de terceros.Live Reload uses the standard MQTT protocol to exchange messages, and can therefore communicate with third party servers. Hay incluso servidores públicos (también conocido como agentes) que puede usar.There are even public servers (also known as brokers) available that you can use. Se ha probado la recarga en vivo con broker.hivemq.com y iot.eclipse.org los nombres de host, así como los servicios proporcionados por www.cloudmqtt.com y www.cloudamqp.com.Live Reload has been tested with broker.hivemq.com and iot.eclipse.org host names, as well as the services provided by www.cloudmqtt.com and www.cloudamqp.com. También puede implementar su propio servidor MQTT en la nube, como HiveMQ en Azure.You can also deploy your own MQTT server in the cloud, such as HiveMQ on Azure.

Puede configurar cualquier puerto, pero es habitual usar el puerto 1883 predeterminado para los servidores remotos.You can configure any port, but it's common to use the default 1883 port for remote servers. La característica Live Reload mensajes utilizan strong-to-end AES simétrico, por lo que es seguro conectarse a servidores remotos.Live Reload messages use strong end-to-end AES symmetric encryption, so it's safe to connect to remote servers. De forma predeterminada, la clave de cifrado y el vector de inicialización (IV) se vuelven a generar en cada sesión de Visual Studio.By default, both the encryption key and the initialization vector (IV) are regenerated on every Visual Studio session.

Probablemente la más sencilla consiste en instalar el mosquitto server en una VM de Ubuntu en blanco en Azure:Probably the easiest way is to install the mosquitto server in a blank Ubuntu VM in Azure:

  1. Crear una nueva máquina virtual de servidor de Ubuntu en Azure PortalCreate a new Ubuntu Server VM in Azure Portal
  2. Agregar una nueva regla de puerto de entrada para 1883 (puerto MQTT de forma predeterminada) en la pestaña redesAdd a new inbound port rule for 1883 (default MQTT port) in the Networking tab
  3. Abra el Cloud Shell (modo de bash)Open the Cloud Shell (bash mode)
  4. Escriba ssh [USERNAME]@[PUBLIC_IP] con el nombre de usuario que eligió en 1) y la dirección IP pública que se muestra en la página de información general de la máquina virtualType ssh [USERNAME]@[PUBLIC_IP] using the username you chose in 1) and the public IP shown in your VM overview page
  5. Ejecute sudo apt-get install mosquitto, escribir la contraseña que eligió en 1)Run sudo apt-get install mosquitto, entering the password you chose in 1)

Ahora puede usar esa dirección IP para conectarse a su propio servidor MQTT.Now you can use that IP to connect to your own MQTT server.