Recarregamento dinâmico do Xamarin (visualização)Xamarin Live Reload (Preview)

Observação

A visualização do Xamarin Live Reload terminou, e queremos agradecer a todos por seus comentários e comentários.The preview of Xamarin Live Reload has ended, and we want to thank everyone for your feedback and comments. Leia nossa roteiro para Visual Studio de 2019 saber mais sobre os novos recursos de produtividade que estamos trabalhando 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. Essa extensão permanecerão disponível para o Visual Studio 2017, mas não receberá atualizações futuras.This extension will remain available for Visual Studio 2017, but will not be receiving future updates.

Xamarin Live Reload permite que você fazer alterações em seu XAML e vê-los refletidas ao vivo, sem a necessidade de compilação de outro e implantar.Xamarin Live Reload enables you to make changes to your XAML and see them reflected live, without requiring another compile and deploy. As alterações feitas no seu XAML serão reimplantadas em Salvar e refletidas no seu destino da implantação.Any changes made to your XAML will be redeployed on save and reflected on your deploy target.

RequisitosRequirements

Guia de IntroduçãoGetting Started

1. Instalar o recarregamento dinâmico do Xamarin no Visual Studio Marketplace1. Install Xamarin Live Reload from the Visual Studio Marketplace

Xamarin Live Reload é distribuído por meio do Visual Studio Marketplace.Xamarin Live Reload is distributed via the Visual Studio Marketplace. Para instalar a extensão, visite o página do Xamarin Live Reload no Visual Studio Marketplace site e clique em baixar.To install the extension, visit the Xamarin Live Reload page on the Visual Studio Marketplace website and click Download.

Abra o. VSIX que é baixado e, em seguida, clique em instalar.Open the .vsix that is downloaded, and click Install.

Confirmação do Xamarin Live Reload instalador do Visual Studio

Como alternativa, você pode pesquisar por ele na Online guia o extensões e atualizações diálogo dentro do Visual Studio.Alternatively, you can search for it in the Online tab in the Extensions and Updates dialog inside Visual Studio.

2. Configurar seu aplicativo para usar o Live Reload2. Configure your app to use Live Reload

Adicionar o Live Reload para aplicativos móveis existentes pode ser feito em três etapas:Adding Live Reload to existing mobile apps can be done in three steps:

  1. Verifique se todos os projetos são atualizados para usar xamarin. Forms 3.0.0 ou acima ou superior.Ensure all projects are updated to use Xamarin.Forms 3.0.0 or above or above.

  2. Adicione a Xamarin.LiveReload pacote do NuGet:Add the Xamarin.LiveReload NuGet package:

    a.a. .NET standard – instale o Xamarin.LiveReload NuGet para a biblioteca do .NET Standard 2.0..NET Standard – Install the Xamarin.LiveReload NuGet into your .NET Standard 2.0 library. Isso não precisa ser instalado em seus projetos de plataforma.This does not need to be installed in your platform projects. Certifique-se de que o origem do pacote é definido como todos os.Ensure that the Package source is set to All.

    b.b. Projetos compartilhados – instale o Xamarin.LiveReload NuGet em todos os projetos de plataforma (como Android, iOS, UWP, etc.).Shared Projects – Install the Xamarin.LiveReload NuGet into all platform projects (such as Android, iOS, UWP, etc.). Certifique-se de que o origem do pacote é definido como todos os.Ensure that the Package source is set to All.

    Adicionar NuGet do Xamarin recarregamento dinâmico com o Gerenciador de pacotes do NuGetAdd Xamarin Live Reload NuGet with NuGet Package Manager

  3. Adicione LiveReload.Init(); para o construtor no Application de classe, conforme mostrado no trecho de código a seguir: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 recarregamento dinâmico3. Start live reloading

Compile e implante seu aplicativo.Compile and deploy your application. Depois que o aplicativo for implantado, abra um arquivo XAML, fazer algumas alterações e salve o arquivo.Once the app is the deployed, open a XAML file, make some changes, and save the file. As alterações são implantados novamente para o destino da implantação.Your changes are redeployed to the deployment target.

Ao vivo works recarregar com alterações a qualquer arquivo XAML.Live Reload works with changes to any XAML file. Alterações em c# ou adição/remoção de pacotes do NuGet requer uma nova compilação e implante entrem em vigor.Changes to C# or adding/removing NuGet packages requires a new build and deploy to take effect.

Perguntas frequentesFrequently Asked Questions

Xamarin Live Reload está disponível no Visual Studio para Mac?Is Xamarin Live Reload available on Visual Studio for Mac?

Não, a versão de visualização do Xamarin Live Reload só está disponível para Visual Studio 2017.No, preview release of Xamarin Live Reload is only available for Visual Studio 2017.

Isso funciona com todas as bibliotecas, como Prism?Does this work with all libraries, such as Prism?

Como seu aplicativo é compilado, o Live Reload funciona com todas as bibliotecas, como Prism e bibliotecas de controle de terceiros, como Telerik, Infragistics, Syncfusion, ArcGIS, GrapeCity e outros fornecedores de controle.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.

As alterações que o Live Reload reimplantar?What changes does Live Reload redeploy?

Recarregamento dinâmico só se aplica as alterações feitas em XAML ou CSS.Live Reload only applies changes made to XAML or CSS. Se você fizer alterações em um arquivo c#, uma recompilação será necessária.If you make changes to a C# file, a recompile will be required.

Quais plataformas têm suporte?What platforms are supported?

Recarregamento dinâmico funciona em qualquer plataforma com suporte pelo xamarin. Forms, incluindo iOS, Android e UWP.Live Reload works on any platform supported by Xamarin.Forms, including Android, iOS, and UWP.

Isso funciona em emuladores, simuladores e dispositivos físicos?Does this work on emulators, simulators, and physical devices?

Sim, o Live Reload funciona com todos os destinos de implantação válido, incluindo dispositivos físicos, simuladores de iOS e Android emulators.Yes, Live Reload works with all valid deployment targets, including Android emulators, iOS simulators, and physical devices. Implantação em um dispositivo exige que o dispositivo e o computador estar na mesma rede Wi-Fi.Deployment to a device requires that the device and computer be on the same Wi-Fi network.

Isso funciona com redes corporativas?Does this work with corporate networks?

Se você está depurando um simulador de iOS ou Android emulator, o Live Reload usa localhost para se comunicar.If you are debugging to an Android emulator or iOS simulator, Live Reload uses localhost to communicate. Se você deseja implantar em um dispositivo, o dispositivo e o computador deve estar na mesma rede Wi-Fi.If you wish to deploy to a device, the device and computer need to be on the same Wi-Fi network. Em cenários em que isso não for possível, você pode configurar seu próprio servidor do Live Reload, que lhe permitirá ao recarregar Live, independentemente das configurações de conectividade de rede.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.

Ele requer depuração do aplicativo?Does it require debugging the app?

No. Na verdade, você pode até mesmo iniciar todos os seus destinos com suporte do aplicativo (Android, iOS e UWP) em qualquer número de dispositivos ou simuladores/emuladores e ver todos eles atualização ao mesmo tempo.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.

LimitaçõesLimitations

  • Há suporte para recarregar somente de XAML.Only reloading of XAML is supported.
  • Estado da interface do usuário não pode ser mantido entre reimplanta, a menos que o uso do MVVM.UI state may not be maintained between redeploys, unless using MVVM.

Problemas ConhecidosKnown Issues

  • Só tem suporte no Visual Studio.Only supported in Visual Studio.
  • Vinculação deve ser definida como não vincular ou vincular somente SDKs de estruturasLinking must be set to Don't Link or Link Framework SDKs Only
  • Recarregar os recursos de todo o aplicativo (ou seja, App. XAML ou compartilhar dicionários de recursos), navegação de aplicativo é redefinida.Reloading app-wide resources (i.e. App.xaml or shared resource dictionaries), app navigation is reset.
  • Recarregamento do ContentView atualmente requer recarregar a página que contém.Reloading of ContentView currently requires reloading the containing page.
  • Elementos que contêm AutomationId podem causar uma falha de recarregar.Elements containing AutomationId may cause a reload failure.
  • Editando o XAML enquanto depuração UWP pode causar uma falha de tempo de execução.Editing XAML while debugging UWP may cause a runtime crash. Solução alternativa: Use iniciar sem depuração (Ctrl + F5) em vez de iniciar depuração (F5).Workaround: Use Start without Debugging (Ctrl + F5) instead of Start Debugging (F5).

Solução de problemasTroubleshooting

Códigos de erroError codes

  • XLR001: O projeto atual faz referência a versão do pacote NuGet 'Xamarin.LiveReload' '[VERSION]', mas a extensão do Xamarin Live Reload requer a versão '[VERSION]'.XLR001: The current project references 'Xamarin.LiveReload' NuGet package version '[VERSION]' but the Xamarin Live Reload extension requires version '[VERSION]'.

    Para permitir que a iteração rápida e a evolução do recurso de Live Reload, o pacote do nuget e a extensão do Visual Studio devem corresponder exatamente.In order to allow rapid iteration and evolution of the Live Reload feature, the nuget package and the Visual Studio extension must match exactly. Atualize o pacote do nuget para a mesma versão da extensão que você instalou.Update your nuget package to the same version of the extension you have installed.

  • XLR002: Recarregamento dinâmico requer pelo menos a propriedade 'MqttHostname' ao compilar na linha de comando. Como alternativa, definir 'EnableLiveReload' como 'false' para desabilitar o recurso.XLR002: Live Reload requires at least the 'MqttHostname' property when building from the command line. Alternatively, set 'EnableLiveReload' to 'false' to disable the feature.

    As propriedades exigidas pelo Live Reload não estão disponíveis quando compilar da linha de comando (ou em integração contínua) e, portanto, deve ser fornecido explicitamente.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: Pacote do nuget recarregamento dinâmico exige a instalação a extensão do Xamarin Live Reload para Visual Studio.XLR003: Live Reload nuget package requires installing the Xamarin Live Reload Visual Studio extension.

    Tentativa de compilar um projeto que referencia o pacote do nuget Live Reload, mas a extensão do Visual não está instalada.Attempted to build a project that references the Live Reload nuget package but the Visual Extension is not installed.

  • Exceção ao carregar assemblies: System.IO.FileNotFoundException: Não foi possível carregar o assembly ' Xamarin.Live.Reload, versão = 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='.

    O projeto de host deve usar PackageReference em vez de packages.configThe host project should be using PackageReference instead of packages.config

Aplicativo não se conectarApp doesn't connect

Quando o aplicativo é compilado, as informações a partir Ferramentas > Opções > Xamarin > Live Reload (chaves de criptografia, porta e nome de host) são inseridas no aplicativo, portanto, que, quando LiveReload.Init() é executado, nenhuma configuração ou emparelhamento é necessário para a conexão seja bem-sucedida.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.

Diferente de normais problemas de rede (firewall, dispositivo em uma rede diferente), o principal motivo que o aplicativo não pode conectar com êxito a IDE é porque sua configuração for diferente no 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. Isso pode acontecer se:This may happen if:

  • Aplicativo foi compilado em um computador diferente.App was compiled on a different machine.
  • Aplicativo foi compilado e implantado em uma sessão diferente do Visual Studio, e gerar chaves de criptografia está marcada (padrão) Ferramentas > Opções > 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.
  • Configurações do Visual Studio foram alteradas (ou seja, nome do host, porta ou criptografia de chaves), mas o aplicativo não foi criado e implantado novamente.Visual Studio settings were changed (i.e. hostname, port or encryption keys) but the app was not built and deployed again.

Esses casos são resolvidos por criar e implantar o aplicativo novamente.These cases are all solved by building and deploying the app again.

Desinstalando a versão prévia 1Uninstalling Preview 1

Se você tiver uma visualização mais antiga e você tiver problemas para desinstalá-lo, siga estas etapas:If you have an older preview and you have problems uninstalling it, follow these steps:

  1. Exclua a pasta C:\Program Files (x86) \Microsoft Visual Studio\Preview\Enterprise\Common7\IDE\Extensions\Xamarin\LiveReload (Observação: substitua "Enterprise" com sua edição instalada e "Preview" com "2017" Se você instalado para um VS estável)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 uma prompt de comando do desenvolvedor para que o Visual Studio e execute devenv /updateconfiguration.Open a Developer command prompt for that Visual Studio and run devenv /updateconfiguration.

Dicas e truquesTips & Tricks

  • Desde que as configurações de Live Reload não são alterados (incluindo as chaves de criptografia, por exemplo, se você desativar gerar chaves de criptografia) e criar na mesma máquina, não é necessário compilar e implantar o aplicativo após inicial Implante, a menos que você altere o código ou dependências.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. Você pode simplesmente iniciar novamente um aplicativo implantado anteriormente e ele se conectará ao último host usado.You can just launch again a previously deployed app and it will connect to the last host used.

  • Não há nenhuma limitação em quantos dispositivos você pode se conectar à mesma sessão do Visual Studio.There is no limitation on how many devices you can connect to the same Visual Studio session. Você pode implantar e iniciar o aplicativo em dispositivos/simuladores tantos conforme necessário para ver o trabalho recarregando ao vivo em todos eles ao mesmo tempo.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.

  • Recarregamento dinâmico recarregará apenas parte da interface do usuário do seu aplicativo, mas faz não recriar suas páginas, nem ela substitua seu modelo de exibição (ou o contexto de associação).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). Isso significa que o inteira estado do aplicativo sempre é preservado recarregamentos, incluindo suas dependências injetadas.This means the whole app state is always preserved across reloads, including your injected dependencies.

Servidor de recarregamento dinâmicoLive Reload Server

Em cenários em que uma conexão de aplicativo em execução em seu computador (conforme indicado pelo uso localhost ou 127.0.0.1 na Ferramentas > Opções > Xamarin > Live Reload) não é possível (ou seja, firewalls, redes diferentes), Você pode configurar um servidor remoto em vez disso, que o IDE e o aplicativo irão 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.

Recarregamento dinâmico usa o padrão protocolo MQTT para troca de mensagens e, portanto, podem se comunicar com servidores de terceiros.Live Reload uses the standard MQTT protocol to exchange messages, and can therefore communicate with third party servers. Há até mesmo servidores públicos (também conhecido como agentes) disponíveis que você pode usar.There are even public servers (also known as brokers) available that you can use. Recarregamento dinâmico foi testado com broker.hivemq.com e iot.eclipse.org nomes de host, bem como os serviços fornecidos pelo www.cloudmqtt.com e 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. Você também pode implantar seu próprio servidor MQTT na nuvem, como HiveMQ no Azure.You can also deploy your own MQTT server in the cloud, such as HiveMQ on Azure.

Você pode configurar qualquer porta, mas é comum usar a porta 1883 padrão para servidores remotos.You can configure any port, but it's common to use the default 1883 port for remote servers. Live Reload mensagens usam forte ponta a ponta AES criptografia simétrica, portanto, é seguro para se conectar a servidores remotos.Live Reload messages use strong end-to-end AES symmetric encryption, so it's safe to connect to remote servers. Por padrão, a chave de criptografia e o vetor de inicialização (IV) são recriados em cada sessão do Visual Studio.By default, both the encryption key and the initialization vector (IV) are regenerated on every Visual Studio session.

Provavelmente, a maneira mais fácil é instalar o mosquitto server em uma VM do Ubuntu em branco no Azure:Probably the easiest way is to install the mosquitto server in a blank Ubuntu VM in Azure:

  1. Criar uma nova VM do Ubuntu Server no Portal do AzureCreate a new Ubuntu Server VM in Azure Portal
  2. Adicionar uma nova regra de porta de entrada para 1883 (porta MQTT padrão) na guia redeAdd a new inbound port rule for 1883 (default MQTT port) in the Networking tab
  3. Abra o Cloud Shell (modo de bash)Open the Cloud Shell (bash mode)
  4. Digite ssh [USERNAME]@[PUBLIC_IP] usando o nome de usuário escolhido em 1) e o IP público mostrado em sua página de visão geral VMType ssh [USERNAME]@[PUBLIC_IP] using the username you chose in 1) and the public IP shown in your VM overview page
  5. Executar sudo apt-get install mosquitto, inserindo a senha que você escolheu em 1)Run sudo apt-get install mosquitto, entering the password you chose in 1)

Agora você pode usar esse IP para se conectar ao seu próprio servidor MQTT.Now you can use that IP to connect to your own MQTT server.