Recarga Dinâmica XAML para Xamarin.Forms

A Recarga Dinâmica XAML se conecta ao fluxo de trabalho existente para aumentar sua produtividade e economizar tempo. Sem a Recarga Dinâmica XAML, você precisa criar e implantar seu aplicativo sempre que quiser ver uma alteração XAML. Com a Recarga Dinâmica, quando você salva o arquivo XAML, as alterações são refletidas ao vivo no aplicativo em execução. Além disso, seu estado de navegação e seus dados serão mantidos, permitindo que você itere rapidamente na interface do usuário sem perder seu lugar no aplicativo. Portanto, com o Recarregamento Dinâmico XAML, você gastará menos tempo recompilando e implantando seus aplicativos para validar as alterações da interface do usuário.

Observação

Se você estiver escrevendo um aplicativo UWP ou WPF nativo, não usando Xamarin.Forms, consulte Recarga Dinâmica XAML para UWP e WPF.

Requisitos do sistema

IDE/Estrutura Versão mínima necessária
Visual Studio 2019 16.9 para o modo somente alterações, 16.4 para o modo de página inteira
Visual Studio 2019 para Mac 8.9 para o modo somente alterações, 8.4 para o modo de página inteira
Xamarin.Forms 5.0.0.2012 para o modo somente alterações; 4.1 para o modo de página inteira

Habilitar Recarga Dinâmica XAML para Xamarin.Forms

Se você estiver iniciando a partir de um modelo, a Recarga Dinâmica XAML estará ativada por padrão e o projeto será configurado para funcionar sem nenhuma configuração adicional. Depure seu aplicativo Android, iOS ou UWP em um emulador ou dispositivo físico e altere seu XAML para disparar uma Recarga Dinâmica XAML.

Se você estiver trabalhando em uma solução existente Xamarin.Forms , nenhuma instalação adicional será necessária para usar a Recarga Dinâmica XAML, mas talvez seja necessário verificar sua configuração para garantir a melhor experiência. Primeiro, ative-o nas configurações do IDE:

  • No Windows, marque a caixa de seleção Habilitar Recarga Dinâmica XAML (e as plataformas necessárias) em Ferramentas>Opções>Depuração Recarga> Dinâmica.
    • Em versões anteriores do Visual Studio 2019, a caixa de seleção está em Ferramentas>Opções>Recarga Dinâmica do Xamarin.>
  • No Mac, marque a caixa de seleção Habilitar Recarga Dinâmica do Xamarin em Ferramentas de Preferências>do Visual Studio>para Recarga Dinâmica XAML do Xamarin.>
    • Em versões anteriores do Visual Studio para Mac, a caixa de seleção está em Preferências>do Visual Studio>Projetos>Xamarin Recarga Dinâmica.

Em seguida, nas configurações de build do Android e iOS, verifique se o Vinculador está definido como "Não vincular" ou "Vincular nenhum". Para usar a Recarga Dinâmica XAML com um dispositivo iOS físico, você também precisa marcar Habilitar o interpretador Mono (Visual Studio 16.4 e superior) ou adicionar --interpreter aos seus argumentos adicionais do mtouch (Visual Studio 16.3 e inferior).

Você pode usar o fluxograma a seguir para verificar a configuração do projeto existente para uso com Recarga Dinâmica XAML:

Configuração de Recarga Dinâmica XAML

Modos de recarga dinâmica

A Recarga Dinâmica XAML pode funcionar em dois modos diferentes: o modo somente alterações mais recente e o modo de página inteira mais antigo.

No Visual Studio 16.9 e no Visual Studio para Mac 8.9, o comportamento padrão é que o modo somente alterações seja usado para todos os aplicativos que usam Xamarin.Forms 5.0 ou mais recente. Para versões mais antigas do Xamarin.Forms, o modo de página inteira é usado. No entanto, você pode forçar o uso do modo de página inteira para todos os aplicativos nas configurações do IDE de Recarga Dinâmica (Ferramentas>, Opções>: Depuração de>Recarga Dinâmica no Windows ou Preferências>do Visual Studio>, Ferramentas para Recarga Dinâmica XAML do Xamarin>no Mac).

O modo Somente alterações analisa o XAML para ver exatamente o que mudou quando você faz uma edição e envia apenas essas alterações para o aplicativo em execução. Essa é a mesma tecnologia usada para WPF e UWP Hot Reload. Ele preserva o estado da interface do usuário, pois não recria a interface do usuário para a página inteira, apenas atualiza as propriedades alteradas nos controles afetados pelas edições. O modo somente alterações também permite o uso da Árvore Visual Dinâmica.

Por padrão, com o modo somente alterações, você não precisa salvar seu arquivo para ver as alterações - as atualizações são aplicadas imediatamente, conforme você digita. No entanto, você pode alterar esse comportamento para atualizar somente ao salvar o arquivo. Isso pode ser feito marcando a caixa de seleção Aplicar Recarga Dinâmica XAML ao salvar o documento (atualmente disponível apenas no Windows) nas configurações do IDE Recarga Dinâmica. Às vezes, apenas a atualização no salvamento do documento pode ser útil se você fizer atualizações XAML maiores e não quiser que elas sejam exibidas até que sejam concluídas.

O modo de página inteira envia o arquivo XAML completo para o aplicativo em execução depois que você faz edições e salva. Em seguida, o aplicativo em execução recarrega a página, recriando seus controles – você verá a atualização da interface do usuário.

O modo Somente alterações é o futuro do Recarregamento Dinâmico e recomendamos usá-lo sempre que possível. É rápido, preserva o estado da interface do usuário e dá suporte à Árvore Visual Dinâmica. O modo de página inteira ainda é fornecido para aplicativos que ainda não foram atualizados para 5.0 Xamarin.Forms .

Observação

Você precisará reiniciar a sessão de depuração ao alternar os modos.

Erros de XAML

Modo somente alterações: se você fizer uma alteração que o analisador XAML de Recarga Dinâmica considera inválida, ele mostrará o erro sublinhado no editor e o incluirá na janela de erros. Esses erros de Recarga Dinâmica têm um código de erro que começa com "XHR" (para Recarga Dinâmica XAML). Se houver algum desses erros na página, o Recarregamento Dinâmico não aplicará as alterações, mesmo que feitas em outras partes da página. Corrija todos os erros para que Recarga Dinâmica comece a funcionar novamente para a página.

Modo de página inteira: se você fizer uma alteração que o Recarregamento Dinâmico XAML não pode recarregar, ele mostrará o erro sublinhado no editor e o incluirá na janela de erros. Essas alterações, conhecidas como edições rudes, incluem digitar incorretamente seu XAML ou conectar um controle a um manipulador de eventos que não existe. Mesmo com uma edição rude, você pode continuar a recarregar sem reiniciar o aplicativo - faça outra alteração em outro lugar no arquivo XAML e clique em salvar. A edição rude não será recarregada, mas suas outras alterações continuarão a ser aplicadas.

Recarregue em várias plataformas ao mesmo tempo

A Recarga Dinâmica XAML dá suporte à depuração simultânea no Visual Studio e no Visual Studio para Mac. Você pode implantar um destino Android e iOS ao mesmo tempo para ver suas alterações refletidas em ambas as plataformas ao mesmo tempo. Para depurar em várias plataformas, consulte:

Limitações conhecidas

  • Xamarin.Forms destinos além do Android, iOS e UWP (por exemplo, macOS) não são suportados no momento.
  • Não há suporte para o uso de [XamlCompilation(XamlCompilationOptions.Skip)], desabilitando a compilação XAML, e pode causar problemas com a Árvore Visual Dinâmica.
  • Não é possível adicionar, remover ou renomear arquivos ou pacotes NuGet durante uma sessão de Recarga Dinâmica de XAML. Se você adicionar ou remover um arquivo ou pacote NuGet, compile e implante novamente seu aplicativo para continuar usando a Recarga Dinâmica de XAML.
  • Defina seu vinculador como Não vincular ou Vincular nenhum para obter a melhor experiência. A configuração Vincular SDK funciona na maioria das vezes, mas pode falhar em determinados casos. As configurações do vinculador podem ser encontradas nas opções de build do Android e do iOS.
  • A depuração em um iPhone físico requer que o interpretador use Recarga Dinâmica XAML. Para fazer isso, abra as configurações do projeto, selecione a guia Build do iOS e certifique-se de que a configuração Ativar o interpretador Mono esteja ativada. Pode ser necessário alterar a opção Plataforma na parte superior da página de propriedades para iPhone.
  • A Recarga Dinâmica XAML não pode recarregar o código C#, incluindo manipuladores de eventos, controles personalizados, code-behind de página e classes adicionais.

Solução de problemas

  • Abra a saída de Recarga Dinâmica XAML para ver as mensagens de status, o que pode ajudar na solução de problemas:
    • Windows: abra a Saída com Exibir>Saída e selecione Recarga Dinâmica do Xamarin em Mostrar saída de: na parte superior
    • Mac: passe o mouse sobre Recarga Dinâmica XAML na barra de status para mostrar esse pad
  • Se o Recarregamento Dinâmico XAML não for inicializado:
    • Atualize sua Xamarin.Forms versão.
    • Verifique se você está usando a versão mais recente do IDE.
    • Defina as configurações do Vinculador do Android ou iOS como Não vincular nas configurações de build do projeto.
  • Se nada acontecer ao salvar o arquivo XAML, verifique se a Recarga Dinâmica XAML está habilitada no IDE.
  • Se você estiver depurando em um iPhone físico e seu aplicativo parar de responder, verifique se o interpretador está ativado. Para ativá-lo, marque Habilitar o interpretador Mono (Visual Studio 16.4/8.4 e superior) ou adicione --interpreter ao campo Argumentos adicionais do mtouch (Visual Studio 16.3/8.3 e anteriores) nas configurações de build do iOS.

Para relatar um bug, use Ajuda>para enviar feedback>para relatar um problema no Windows e Ajudar>a relatar um problema no Mac.