Partilhar via


Implantando e depurando aplicações UWP

Este artigo orienta-o pelas etapas para direcionar vários alvos de implantação e de depuração.

O Microsoft Visual Studio permite implantar e depurar seus aplicativos da Plataforma Universal do Windows (UWP) em uma variedade de dispositivos Windows 10. O Visual Studio lidará com o processo de criação e registro do aplicativo no dispositivo de destino.

Escolhendo um destino de implantação

Para escolher um alvo, vá para a lista suspensa de alvo de depuração ao lado do botão Iniciar Depuração e escolha o alvo para o qual deseja implantar o seu aplicativo. Depois que o destino for selecionado, selecione Iniciar Depuração (F5) para implantar e depurar nesse destino, ou selecione Ctrl+F5 para apenas implantar nesse destino.

Lista de alvos do dispositivo de depuração

  • Simulator implantará o aplicativo em um ambiente simulado em sua máquina de desenvolvimento atual. Essa opção só estará disponível se o Target Platform Min. Version do seu aplicativo for menor ou igual ao sistema operacional da sua máquina de desenvolvimento.
  • de Máquina Local implantará o aplicativo em sua máquina de desenvolvimento atual. Essa opção só estará disponível se o Target Platform Min. Version do seu aplicativo for menor ou igual ao sistema operacional da sua máquina de desenvolvimento.
  • Máquina Remota permitirá-lhe especificar um destino remoto para implantar a aplicação. Mais informações sobre a implantação em uma máquina remota podem ser encontradas em Especificando um dispositivo remoto.
  • Device implantará o aplicativo em um dispositivo conectado por USB. O dispositivo deve estar desbloqueado para desenvolvedores e ter o ecrã desbloqueado.
  • Um Emulator destino inicializará e implantará o aplicativo em um emulador com a configuração especificada no nome. Os emuladores só estão disponíveis em máquinas habilitadas para Hyper-V que executam o Windows 8.1 ou posterior.

Depuração de aplicações implantadas

O Visual Studio também pode anexar-se a qualquer processo de aplicativo UWP em execução ao selecionar Depurare depois Anexar ao Processo. Anexar a um processo em execução não requer o projeto original do Visual Studio, mas carregar os símbolos do processo ajudará significativamente ao depurar um processo para o qual você não tem o código original.

Além disso, qualquer pacote de aplicações instalado pode ser anexado e depurado selecionando Depurar, Outrose, em seguida, Depurar Pacotes de Aplicações Instalados.

caixa de diálogo Debug Pacote de Aplicativo Instalado

Selecionar Não executar, mas depurar o meu código quando ele for iniciado fará com que o depurador do Visual Studio seja anexado ao seu programa UWP quando o executar em um momento personalizado. Esta é uma maneira eficaz de depurar caminhos de controle de diferentes métodos de inicialização, como ativação de protocolo com parâmetros personalizados.

Os aplicativos UWP podem ser desenvolvidos e compilados no Windows 8.1 ou posterior, mas exigem a execução do Windows 10. Se você estiver desenvolvendo um aplicativo UWP em um PC com Windows 8.1, poderá depurar remotamente um aplicativo UWP em execução em outro dispositivo Windows 10, desde que o host e o computador de destino estejam na mesma LAN. Para fazer isso, baixe e instale o Remote Tools for Visual Studio em ambas as máquinas. A versão instalada deve corresponder à versão existente do Visual Studio que você instalou, e a arquitetura selecionada (x86, x64) também deve corresponder à do seu aplicativo de destino.

Layout do pacote

A partir da Atualização 3 do Visual Studio 2015, adicionamos a opção para os desenvolvedores especificarem o caminho de layout para seus aplicativos UWP. Isso determina para onde o layout do pacote é copiado no disco quando você cria seu aplicativo. Por padrão, essa propriedade é definida em relação ao diretório raiz do projeto. Se você não modificar essa propriedade, o comportamento permanecerá o mesmo que para versões anteriores do Visual Studio.

Esta propriedade pode ser modificada nas propriedades Debug do projeto.

Se você quiser incluir todos os arquivos de layout em seu pacote ao criar um pacote para seu aplicativo, deverá adicionar a propriedade do projeto <IncludeLayoutFilesInPackage>true</IncludeLayoutFilesInPackage>.

Para adicionar esta propriedade:

  1. Clique com o botão direito do mouse no projeto e selecione Descarregar projeto.
  2. Clique com o botão direito do mouse no projeto e selecione Editar [nome_do_projeto].xxproj (.xxproj mudará dependendo do idioma do projeto).
  3. Adicione a propriedade e, em seguida, recarregue o projeto.

Especificando um dispositivo remoto

C# e Microsoft Visual Basic

Para especificar uma máquina remota para aplicativos C# ou Microsoft Visual Basic, selecione Máquina Remota na lista suspensa de destino de depuração. A caixa de diálogo Conexões Remotas será exibida, o que permitirá especificar um endereço IP ou selecionar um dispositivo descoberto. Por padrão, o modo de autenticação Universal está selecionado. Para determinar qual modo de autenticação usar, consulte Modos de autenticação.

caixa de diálogo Conexões Remotas

Para voltar a esta caixa de diálogo, pode abrir as propriedades do projeto e ir para o separador Depurar. A partir daí, selecione Procurar ao lado de Máquina remota:

Separador de Depuração

Para implantar uma aplicação num PC remoto anterior à Atualização para Criadores, também é necessário baixar e instalar as Ferramentas Remotas do Visual Studio no computador de destino. Para obter instruções completas, consulte Instruções do Remote PC. No entanto, a partir do Creators Update PC também suporta implantação remota.

C++ e JavaScript

Para especificar um destino de máquina remota para um aplicativo UWP C++ ou JavaScript:

  1. No Gerenciador de Soluções, clique com o botão direito do mouse no projeto e clique em Propriedades.
  2. Vá para Configurações de de Depuração e, em Depurador para iniciar, selecione Máquina Remota.
  3. Introduza o Nome da Máquina (ou clique em Localizar para encontrar uma) e, em seguida, defina a propriedade Tipo de Autenticação.

Depurar páginas de propriedades

Depois que a máquina for especificada, poderá selecionar Máquina Remota no menu suspenso de destino de depuração para retornar a essa máquina especificada. Apenas uma máquina remota pode ser selecionada de cada vez.

Instruções para PC remoto

Observação

Estas instruções só são necessárias para versões mais antigas do Windows 10. A partir da Atualização para Criadores, um PC pode ser tratado como um Xbox. Ou seja, ativando a Deteção de Dispositivos no menu Modo de Programador do PC e utilizando a Autenticação Universal para emparelhar PIN e ligar ao PC.

Para implantar em um PC remoto pré-Atualização de Criadores, o computador de destino deve ter as Ferramentas Remotas do Visual Studio instaladas. O computador remoto também deve estar executando uma versão do Windows maior ou igual aos seus aplicativos propriedade Versão Versão Plataforma de Destino. Depois de instalar as ferramentas remotas, você deve iniciar o depurador remoto no PC de destino.

Para fazer isso, procure por Depurador Remoto no menu Iniciar, abra-o e, se solicitado, permita que o depurador configure as definições do firewall. Por padrão, o depurador é iniciado com a autenticação do Windows. Isso exigirá credenciais de usuário se o usuário conectado não for o mesmo em ambos os computadores.

Para alterá-lo para sem autenticação, noDepurador Remoto, vá para Ferramentas - Opções dee, em seguida, configure-o como Sem Autenticação. Depois de configurar o depurador remoto, deve também garantir que o dispositivo anfitrião esteja no Modo de Desenvolvedor. Depois disso, podes desenvolver a partir da tua máquina de desenvolvimento.

Para obter mais informações, consulte a página Centro de Download do Visual Studio.

Passagem de argumentos de depuração de linha de comando

No Visual Studio 2019, você pode passar argumentos de depuração de linha de comando quando começar a depurar aplicativos UWP. Você pode acessar os argumentos de depuração da linha de comando a partir do parâmetro args no método OnLaunched da classe Application. Para especificar argumentos de depuração de linha de comando, abra as propriedades do projeto e navegue até a guia Depurar.

Observação

Isso está disponível no Visual Studio 2017 (versão 15.1) para C#, VB e C++. JavaScript está disponível em versões posteriores. Os argumentos de depuração da linha de comando estão disponíveis para todos os tipos de implantação, exceto para o simulador.

Para projetos UWP C# e VB, verás um campo Argumentos de linha de comando: em Opções de arranque.

Argumentos de linha de comando

Para projetos UWP C++ e JS, você verá Argumentos de linha de comando como um campo noPropriedades de depuração .

Uma captura de tela das páginas de propriedades do App 4 com as propriedades de configuração; opção de depuração > selecionada, mostrando a propriedade Argumentos da Linha de Comando listada na tabela.

Depois de especificares os parâmetros da linha de comandos, podes aceder ao valor do argumento no método OnLaunched do aplicativo. O objeto LaunchActivatedEventArgs args terá uma propriedade Arguments com o valor definido pelo texto no campo Argumentos da Linha de Comando .

Captura de tela de argumentos de linha de comando para C++ e JS.

Modos de autenticação

Há três modos de autenticação para implantação remota de máquina:

  • Universal (Protocolo Não Criptografado): Use este modo de autenticação sempre que estiver implantando em um dispositivo remoto. Atualmente, isso é para dispositivos IoT, dispositivos Xbox e dispositivos HoloLens, bem como PCs com Windows Versão 1703 (Creators Update) ou posterior. Universal (Unencrypted Protocol) só deve ser usado em redes confiáveis. A conexão de depuração é vulnerável a utilizadores mal-intencionados que podem intercetar e alterar dados que estão a ser passados entre a máquina de desenvolvimento e a máquina remota.
  • Windows: Este modo de autenticação destina-se apenas a ser utilizado para um PC remoto (ambiente de trabalho ou portátil) que executa as Ferramentas Remotas do Visual Studio. Use esse modo de autenticação quando tiver acesso às credenciais do usuário conectado da máquina de destino. Este é o canal mais seguro para implantação remota.
  • Nenhum: Este modo de autenticação destina-se apenas a ser usado para um PC remoto (desktop ou laptop) executando as Ferramentas Remotas do Visual Studio. Use esse modo de autenticação quando tiver uma máquina de teste configurada em um ambiente que tenha uma conta de teste conectada e não puder inserir as credenciais. Verifique se as configurações do depurador remoto estão definidas para não aceitar autenticação.

Opções avançadas de implantação remota

A partir do lançamento do Visual Studio 2015 Update 3 e da Atualização de Aniversário do Windows 10, há novas opções avançadas de implantação remota para determinados dispositivos Windows 10. As opções avançadas de implantação remota podem ser encontradas no menu Debug para propriedades do projeto.

As novas propriedades incluem:

  • Tipo de implantação
  • Caminho de registro do pacote
  • Mantenha todos os arquivos no dispositivo, mesmo aqueles que não fazem mais parte do seu layout

Requerimentos

Para utilizar as opções avançadas de implantação remota, você deve satisfazer os seguintes requisitos:

  • Ter o Visual Studio 2015 Update 3 ou alguma versão posterior do Visual Studio instalada com o Windows 10 Tools 1.4.1 ou posterior (que inclui o SDK de Atualização de Aniversário do Windows 10) Recomendamos que você use a versão mais recente do Visual Studio com atualizações para garantir que você obtenha todos os recursos de desenvolvimento e segurança mais recentes.
  • Direcione um dispositivo remoto Xbox do Windows 10 Anniversary Update ou um PC do Windows 10 Creators Update
  • Usar o modo de autenticação universal

Páginas de propriedades

Para um aplicativo UWP C# ou Visual Basic, a página de propriedades terá a seguinte aparência.

propriedades CS ou VB

Para um aplicativo UWP C++, a página de propriedades terá a seguinte aparência.

propriedades Cpp

Copiar ficheiros para o dispositivo

Copiar ficheiros para o dispositivo irá transferir fisicamente os ficheiros através da rede para o dispositivo remoto. Ele irá copiar e registrar o layout do pacote criado no diretório Layout. Visual Studio manterá os arquivos que são copiados para o dispositivo em sincronia com os arquivos em seu projeto Visual Studio; No entanto, há uma opção para manter todos os arquivos no dispositivo – mesmo aqueles que não fazem mais parte do seu layout. Selecionar essa opção significa que todos os arquivos que foram copiados anteriormente para o dispositivo remoto, mas não fazem mais parte do seu projeto, permanecerão no dispositivo remoto.

O caminho de registro do pacote especificado quando você copiar arquivos para o dispositivo é o local físico no dispositivo remoto onde os arquivos são copiados. Esse caminho pode ser especificado como qualquer caminho relativo. O local onde os arquivos são implantados será relativo a uma raiz de arquivos de desenvolvimento que variará dependendo do dispositivo de destino. Especificar esse caminho é útil para vários desenvolvedores que compartilham o mesmo dispositivo e trabalham em pacotes com alguma variação de compilação.

Observação

Copiar ficheiros para o dispositivo é atualmente suportado na Xbox com a Atualização de Aniversário do Windows 10 e em PCs com a Atualização Criadores do Windows 10.

No dispositivo remoto, o layout é copiado para o seguinte local padrão: \\MY-DEVKIT\DevelopmentFiles\PACKAGE-REGISTRATION-PATH

Registar layout da rede

Ao optares por registar o layout para a rede, podes criar o layout do pacote para um compartilhamento de rede e, em seguida, registar o layout no dispositivo remoto diretamente a partir da rede. Isso requer que você especifique um caminho de pasta de layout (um compartilhamento de rede) que seja acessível a partir do dispositivo remoto. A propriedade Layout Folder Path é o caminho definido em relação ao PC que executa o Visual Studio, enquanto a propriedade Caminho de Registo do Pacote é o mesmo caminho, mas especificado em relação ao dispositivo remoto.

Para registar com êxito o layout da rede, deverá primeiro tornar o caminho da pasta Layout uma pasta de rede partilhada. Para fazer isso, clique com o botão direito do mouse na pasta no Explorador de Arquivos, selecione Compartilhar com > pessoas específicase, em seguida, escolha os usuários com quem você gostaria de compartilhar a pasta. Quando tentar registar o esquema a partir da rede, ser-lhe-ão solicitadas credenciais para garantir que está a registar-se como um utilizador com acesso à partilha.

Para obter ajuda com isso, consulte os seguintes exemplos:

  • Exemplo 1 (pasta de layout local, acessível como um compartilhamento de rede):

    • Caminho da pasta Layout = D:\Layouts\App1
    • Caminho de registro do pacote = \\NETWORK-SHARE\Layouts\App1
  • Exemplo 2 (pasta de layout de rede):

    • Caminho da pasta Layout = \\NETWORK-SHARE\Layouts\App1
    • Caminho de registro do pacote = \\NETWORK-SHARE\Layouts\App1

Quando você registrar o layout pela primeira vez na rede, suas credenciais serão armazenadas em cache no dispositivo de destino para que você não precise entrar repetidamente. Para remover credenciais armazenadas em cache, você pode usar a ferramenta WinAppDeployCmd.exe do SDK do Windows 10 com o comando deletecreds.

Não é possível selecionar manter todos os arquivos no dispositivo ao registar o layout da rede, porque nenhum arquivo é copiado fisicamente para o dispositivo remoto.

Observação

O layout de registo da rede é atualmente suportado no Xbox a correr a Atualização de Aniversário do Windows 10 e em PCs a utilizar a Atualização dos Criadores do Windows 10.

No dispositivo remoto, o layout é registrado no seguinte local padrão, dependendo da família de dispositivos: Xbox: \\MY-DEVKIT\DevelopmentFiles\XrfsFiles - este é um link simbólico para o caminho de registro do pacote PC não usa um link simbólico e, em vez disso, registra diretamente o caminho de registro do pacote

Opções de depuração

No Windows 10, o desempenho de inicialização de aplicativos UWP é melhorado iniciando proativamente e, em seguida, suspendendo aplicativos em uma técnica chamada de pré-lançamento. Muitos aplicativos não precisarão fazer nada de especial para funcionar nesse modo, mas alguns aplicativos podem precisar ajustar seu comportamento. Para ajudar a depurar quaisquer problemas nesses caminhos de código, você pode começar a depurar o aplicativo do Visual Studio no modo de pré-inicialização.

A depuração é suportada tanto a partir de um projeto do Visual Studio (Debug ->Other Debug Targets ->Debug Universal Windows App Prelaunch), como para aplicações já instaladas na máquina (Debug ->Other Debug Targets ->Debug Installed App Package marcando a caixa de seleção Ativar aplicação com pré-lançamento). Para obter mais informações, consulte Debug UWP Prelaunch.

Você pode definir as seguintes opções de implantação na página de propriedades do Debug do projeto de inicialização:

  • Permitir loopback de rede local

    Por motivos de segurança, um aplicativo UWP instalado da maneira padrão não tem permissão para fazer chamadas de rede para o dispositivo em que está instalado. Por padrão, a implantação do Visual Studio cria uma isenção dessa regra para o aplicativo implantado. Esta isenção permite-lhe testar procedimentos de comunicação numa única máquina. Antes de enviar seu aplicativo para a Microsoft Store, você deve testá-lo sem a isenção.

    Para remover a isenção de loopback de rede da aplicação:

    • Na página de propriedades C# e Visual Basic Debug, desmarque a caixa de seleção Permitir loopback de rede local.
    • Na página de propriedades JavaScript e C++ Debugging, defina o valor Allow Local Network Loopback como No.
  • Não iniciar, mas depurar meu código quando ele for iniciado / Iniciar aplicativo

    Para configurar a implementação para iniciar automaticamente uma sessão de depuração quando o aplicativo for lançado:

    • Na página de propriedades C# e Visual Basic Depurar, marque a caixa de seleção Não iniciar, mas depurar meu código quando ele for iniciado.
    • Na página de propriedades JavaScript e C++ Debugging, defina o valor Launch Application como Yes.

Símbolos

Os arquivos de símbolo contêm uma variedade de dados muito úteis ao depurar código, como variáveis, nomes de funções e endereços de ponto de entrada, permitindo que você entenda melhor as exceções e a ordem de execução da pilha de chamadas. Os símbolos para a maioria das variantes do Windows estão disponíveis através do Microsoft Symbol Server ou podem ser baixados para pesquisas offline mais rápidas em Download Windows Symbol Packages.

Para definir opções de símbolo para o Visual Studio, selecione Ferramentas > Opçõese, a seguir, vá para Depuração > Símbolos na janela de diálogo.

caixa de diálogo de Opções

Para carregar símbolos em uma sessão de depuração com WinDbg, defina a variável sympath para o local do pacote de símbolos. Por exemplo, executar o seguinte comando carregará símbolos do Microsoft Symbol Server e, em seguida, armazená-los em cache no diretório C:\Symbols:

.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
.reload

Você pode adicionar mais caminhos usando o delimitador de ‘;’ ou usar o comando .sympath+. Para operações de símbolos mais avançadas que usam WinDbg, consulte Símbolos públicos e privados.

WinDbg

WinDbg é um depurador poderoso que é fornecido como parte do pacote Ferramentas de Depuração para Windows, que está incluído no SDK do Windows. A instalação do SDK do Windows permite que você instale as Ferramentas de Depuração para Windows como um produto autônomo. Embora seja altamente útil para depurar código nativo, não recomendamos o WinDbg para aplicativos escritos em código gerenciado ou HTML5.

Para usar o WinDbg com aplicativos UWP, você precisará primeiro desabilitar o Gerenciamento do Tempo de Vida do Processo (PLM) para o pacote do seu aplicativo usando o PLMDebug, conforme descrito em Ferramentas de teste e depuração para Gerenciamento do Tempo de Vida do Processo (PLM).

plmdebug /enableDebug [PackageFullName] ""C:\Program Files\Debugging Tools for Windows (x64)\WinDbg.exe\" -server npipe:pipe=test"

Em contraste com o Visual Studio, a maioria da funcionalidade principal do WinDbg depende do fornecimento de comandos para a janela de comando. Os comandos fornecidos permitem-lhe visualizar o estado de execução, investigar despejos de memória em modo de utilizador e efetuar depuração em vários modos.

Um dos comandos mais populares no WinDbg é !analyze -v, que é usado para recuperar uma quantidade detalhada de informações sobre a exceção atual, incluindo:

  • FAULTING_IP: ponteiro de instrução no momento da falha
  • EXCEPTION_RECORD: endereço, código e sinalizadores da exceção atual
  • STACK_TEXT: rastreamento de pilha antes da exceção

Para obter uma lista completa de todos os comandos WinDbg, consulte Debugger Commands.