Recarregamento do Xamarin Live (versão prévia)Xamarin Live Reload (Preview)

Observação

A versão prévia da recarga do Xamarin Live terminou e queremos agradecer a todos os 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 nosso roteiro para o Visual Studio 2019 para saber mais sobre os novos recursos de produtividade nos quais estamos trabalhando para o 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á 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.

O Xamarin Live reload permite que você faça alterações no XAML e os veja refletido em tempo real, sem a necessidade de outra compilação e implantação.Xamarin Live Reload enables you to make changes to your XAML and see them reflected live, without requiring another compile and deploy. Todas as alterações feitas em seu XAML serão reimplantadas no salvamento e refletidas em seu destino de 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. Instale o Xamarin Live recarregar do Visual Studio Marketplace1. Install Xamarin Live Reload from the Visual Studio Marketplace

A recarga ao vivo do Xamarin é distribuída por meio do Visual Studio Marketplace.Xamarin Live Reload is distributed via the Visual Studio Marketplace. Para instalar a extensão, visite a página de recarregamento do Xamarin Live no site Visual Studio Marketplace 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 baixado e clique em instalar.Open the .vsix that is downloaded, and click Install.

Confirmação de recarga ao vivo do instalador do Visual Studio Installer

Como alternativa, você pode procurá-lo na guia online da caixa de diálogo extensões e atualizações 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 recarregamento ao vivo2. Configure your app to use Live Reload

Adicionar a recarga ao vivo a 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 estão atualizados para usar Xamarin. Forms 3.0.0 ou superior ou superior.Ensure all projects are updated to use Xamarin.Forms 3.0.0 or above or above.

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

    a.a. .Net Standard – instale o NuGet do Xamarin. LiveReload em sua 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. Verifique se a origem do pacote está definida como todos.Ensure that the Package source is set to All.

    b.b. Projetos compartilhados – instale o NuGet do Xamarin. LiveReload 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.). Verifique se a origem do pacote está definida como todos.Ensure that the Package source is set to All.

    adicionar o Xamarin Live recarregar o NuGet com o Gerenciador de pacotes NuGetAdd Xamarin Live Reload NuGet with NuGet Package Manager

  3. Adicione LiveReload.Init(); ao Construtor na classe Application, conforme mostrado no seguinte trecho 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 o recarregamento ao vivo3. Start live reloading

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

O recarregamento ao vivo funciona com alterações em qualquer arquivo XAML.Live Reload works with changes to any XAML file. Alterações C# ou adição/remoção de pacotes NuGet requer uma nova compilação e implantação para entrar em vigor.Changes to C# or adding/removing NuGet packages requires a new build and deploy to take effect.

Perguntas frequentesFrequently Asked Questions

A recarga do Xamarin Live 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 o Visual Studio 2017.No, preview release of Xamarin Live Reload is only available for Visual Studio 2017.

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

Como seu aplicativo é compilado, o recarregamento ao vivo 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.

Quais alterações o reimplanta ao vivo?What changes does Live Reload redeploy?

O recarregamento ao vivo aplica apenas 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 C# arquivo, 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?

O recarregamento ao vivo funciona em qualquer plataforma com suporte do Xamarin. Forms, incluindo Android, iOS 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, a recarga ao vivo funciona com todos os destinos de implantação válidos, incluindo emuladores do Android, simuladores do iOS e dispositivos físicos.Yes, Live Reload works with all valid deployment targets, including Android emulators, iOS simulators, and physical devices. A implantação em um dispositivo requer que o dispositivo e o computador estejam 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ê estiver Depurando em um emulador do Android ou no simulador do iOS, a recarga ao vivo usará 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 precisam 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 é possível, você pode configurar seu próprio servidor de recarregamento dinâmico, o que permitirá que você recarregue ao vivo, 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 a depuração do aplicativo?Does it require debugging the app?

No. Na verdade, você pode até mesmo iniciar todos os seus destinos de aplicativo com suporte (Android, iOS e UWP) em qualquer número de dispositivos ou simuladores/emuladores e ver todas as atualizações 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 apenas para o recarregamento de XAML.Only reloading of XAML is supported.
  • O estado da interface do usuário não pode ser mantido entre reimplantações, a menos que o MVVM seja usado.UI state may not be maintained between redeploys, unless using MVVM.

Problemas ConhecidosKnown Issues

  • Somente com suporte no Visual Studio.Only supported in Visual Studio.
  • A vinculação deve ser definida para não vincular ou vincular somente SDKs de estruturaLinking must be set to Don't Link or Link Framework SDKs Only
  • Recarregar recursos de todo o aplicativo (ou seja, app. XAML ou dicionários de recursos compartilhados), a navegação do aplicativo é redefinida.Reloading app-wide resources (i.e. App.xaml or shared resource dictionaries), app navigation is reset.
  • O recarregamento de ContentView atualmente requer o recarregamento da página recipiente.Reloading of ContentView currently requires reloading the containing page.
  • Os elementos que contêm AutomationId podem causar uma falha de recarregamento.Elements containing AutomationId may cause a reload failure.
  • Editar XAML durante a 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 referencia ' Xamarin. LiveReload ' versão do pacote NUGET ' [Version] ', mas a extensão de recarregamento do Xamarin Live 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 a iteração rápida e a evolução do recurso de recarregamento ao vivo, o pacote 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 seu pacote 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: o recarregamento ao vivo requer pelo menos a propriedade ' MqttHostname ' ao criar a partir da linha de comando. Como alternativa, defina ' 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 pela recarga ao vivo não estão disponíveis durante a criação a partir da linha de comando (ou na integração contínua) e, portanto, devem ser fornecidas 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: o pacote NuGet de recarregamento ao vivo requer a instalação da extensão do Visual Studio para recarregar o Xamarin Live.XLR003: Live Reload nuget package requires installing the Xamarin Live Reload Visual Studio extension.

    Tentativa de criar um projeto que referencia o pacote NuGet de recarregamento ao vivo, mas a extensão 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. recarregar, 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='.

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

O aplicativo não se conectaApp doesn't connect

Quando o aplicativo é criado, as informações de ferramentas > opções > Xamarin > recarregamento ao vivo (nome do host, chaves de criptografia e porta) são incorporadas ao aplicativo, de modo que quando LiveReload.Init() é executado, nenhum emparelhamento ou configuração é necessário para a conexão com Houve.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.

Além de problemas normais de rede (firewall, dispositivo em uma rede diferente), o principal motivo pelo qual o aplicativo pode não conectar com êxito o IDE é porque sua configuração difere daquela do 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:

  • O aplicativo foi compilado em um computador diferente.App was compiled on a different machine.
  • O aplicativo foi compilado e implantado em uma sessão diferente do Visual Studio, e a geração automática de chaves de criptografia está marcada (o padrão) em ferramentas > opções > Xamarin > recarregar ao vivo.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.
  • As configurações do Visual Studio foram alteradas (ou seja, nome do host, porta ou chaves de criptografia), mas o aplicativo não foi compilado 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 criando e implantando o aplicativo novamente.These cases are all solved by building and deploying the app again.

Desinstalando a visualização 1Uninstalling Preview 1

Se você tiver uma versão prévia mais antiga e 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" pela edição instalada e "Preview" por "2017" se você instalou em 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 um prompt de comando do desenvolvedor para o Visual Studio e execute devenv /updateconfiguration.Open a Developer command prompt for that Visual Studio and run devenv /updateconfiguration.

Dicas & truquesTips & Tricks

  • Desde que as configurações de recarga ao vivo não sejam alteradas (incluindo as chaves de criptografia, como se você desativar a geração automática de chaves de criptografia) e criar a partir da mesma máquina, não será necessário compilar e implantar o aplicativo após a implantação inicial, a menos que você altere 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 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 de quantos dispositivos você pode 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 quantos dispositivos/simuladores forem necessários para ver o recarregamento ao vivo trabalhando 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.

  • O recarregamento ao vivo recarregará apenas a parte da interface do usuário do seu aplicativo, mas não recriará suas páginas, nem substituirá seu modelo de exibição (ou 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 todo o estado do aplicativo é sempre preservado entre recargas, 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 do aplicativo em execução para seu computador (como indicado usando localhost ou 127.0.0.1 em ferramentas > opções > Xamarin > Live recarregar) não é possível (ou seja, firewalls, redes diferentes), você pode configurar um servidor remoto em vez disso, o IDE e o aplicativo serão conectardos.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.

O recarregamento ao vivo usa o protocolo MQTT padrão para trocar mensagens e, portanto, pode se comunicar com servidoresde 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 conhecidos como agentes) disponíveis que você pode usar.There are even public servers (also known as brokers) available that you can use. O recarregamento ao vivo foi testado com broker.hivemq.com e iot.eclipse.org nomes de host, bem como os serviços fornecidos por 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. As mensagens de recarga ao vivo usam uma forte criptografia simétrica AES de ponta a ponta, portanto, é seguro conectar-se 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 regenerados em todas as sessões 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 servidor mosquitto em uma VM 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 servidor Ubuntu no portal do AzureCreate a new Ubuntu Server VM in Azure Portal
  2. Adicione 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. Abrir o Cloud Shell (modo bash)Open the Cloud Shell (bash mode)
  4. Digite ssh [USERNAME]@[PUBLIC_IP] usando o nome de usuário que você escolheu em 1) e o IP público mostrado na página de visão geral da VMType ssh [USERNAME]@[PUBLIC_IP] using the username you chose in 1) and the public IP shown in your VM overview page
  5. Execute 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.