Compartilhar via


Implantando e depurando aplicativos UWP

Este artigo orienta você pelas etapas para almejar diferentes destinos de implantação e 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 compilação e registro do aplicativo no dispositivo de destino.

Escolhendo um destino de implantação

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

lista de alvos do dispositivo de depuração

  • Simulador implementará o aplicativo em um ambiente simulado no seu atual computador de desenvolvimento. Essa opção só estará disponível se o aplicativo Target Platform Min. O de versão é menor ou igual ao sistema operacional em seu computador de desenvolvimento.
  • A Máquina Local implantará o aplicativo em seu computador de desenvolvimento atual. Essa opção só estará disponível se o aplicativo Target Platform Min. O de versão é menor ou igual ao sistema operacional em seu computador de desenvolvimento.
  • Máquina Remota permitirá que você especifique um alvo remoto para implantar o aplicativo. Mais informações sobre como implantar em um computador remoto podem ser encontradas em Especificando um dispositivo remoto.
  • Device implantará o aplicativo em um dispositivo conectado a USB. O dispositivo deve ser desbloqueado pelo desenvolvedor e ter a tela desbloqueada.
  • Um emulador destino inicializará e implantará o aplicativo em um emulador com a configuração especificada no nome. Os emuladores só estão disponíveis em computadores habilitados para Hyper-V rodando o Windows 8.1 ou posterior.

Depurando aplicativos implantados

Visual Studio também pode se conectar a qualquer processo de aplicativo UWP em execução selecionando Depuraçãoe, em seguida, 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 na depuração de um processo quando você não tem o código original.

Além disso, qualquer pacote de aplicativo instalado pode ser anexado e depurado selecionando Depurar, Outrose depois Depurar Pacotes de Aplicativos Instalados.

caixa de diálogo para depurar pacote de aplicativo instalado

Selecionar Não iniciar, mas depurar meu código quando ele iniciar fará com que o depurador do Visual Studio se conecte ao seu aplicativo UWP quando você o iniciar em um tempo definido por você. Essa é 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 que o Windows 10 seja executado. Se você estiver desenvolvendo um aplicativo UWP em um computador 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 Ferramentas Remotas para Visual Studio em ambos os computadores. 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 aplicativo de destino.

Layout do pacote

A partir do Visual Studio 2015 Atualização 3, 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 nas versões anteriores do Visual Studio.

Essa propriedade pode ser modificada nas propriedades de depuração 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 [projectname].xxproj (.xxproj será alterado dependendo da linguagem do projeto).
  3. Adicione a propriedade e, em seguida, recarregue o projeto.

Especificando um dispositivo remoto

C# e Microsoft Visual Basic

Para especificar um computador remoto 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á que você especifique um endereço IP ou selecione um dispositivo descoberto. Por padrão, o modo de autenticação Universal é selecionado. Para determinar qual modo de autenticação usar, consulte modos de autenticação.

caixa de diálogo conexões remotas

Para retornar a essa caixa de diálogo, você pode abrir as propriedades do projeto e ir para a guia Depurar. A partir daí, selecione Localizar ao lado do computador remoto :

aba de depuração

Para implantar um aplicativo em um computador remoto com versão anterior à Atualização de Criadores, você também precisará baixar e instalar as Ferramentas Remotas do Visual Studio no computador de destino. Para obter instruções completas, consulte instruções de computador remoto. No entanto, a partir da atualização Creators, o PC também oferece suporte à implantação remota.

C++ e JavaScript

Para especificar um destino de computador remoto para um aplicativo UWP C++ ou JavaScript:

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

páginas de propriedades de depuração

Depois que a máquina for especificada, você poderá selecionar Máquina Remota na lista suspensa de destino de depuração para retornar à máquina especificada. Somente um computador remoto pode ser selecionado por vez.

Instruções de computador remoto

Observação

Essas instruções são necessárias apenas 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, habilitando a Descoberta de Dispositivos no menu Modo de Desenvolvedor do computador e usando a Autenticação Universal para emparelhar PIN e conectar-se com o computador.

Para implantar em um computador remoto pré-Atualização para 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 à propriedade Min. Versão da Plataforma de Destino do seu aplicativo . Depois de instalar as ferramentas remotas, você deve iniciar o depurador remoto no computador de destino.

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

Para alterá-lo para sem autenticação, no Depurador Remoto, vá para Ferramentas ->Opçõese, em seguida, defina-o como Sem Autenticação. Depois que o depurador remoto for configurado, você também deve garantir ter definido o dispositivo host para o Modo de Desenvolvedor. Depois disso, você pode implantar a partir do computador de desenvolvimento.

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

Passando argumentos de linha de comando para depuração

No Visual Studio 2019, você pode passar argumentos de depuração de linha de comando ao iniciar a depuração de 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++. O JavaScript está disponível em versões posteriores. Os argumentos de depuração de linha de comando estão disponíveis para todos os tipos de implantação, exceto para o Simulador.

Para projetos UWP de C# e VB, você verá um argumentos de linha de comando: campo em opções iniciar.

argumentos de linha de comando

Para projetos UWP do C++ e JS, você verá argumentos de linha de comando como um campo nas propriedades de depuração .

Captura de tela das Páginas de Propriedades do App 4 com propriedades de configuração > opção de depuração selecionada mostrando a propriedade Argumentos de Linha de Comando listada na tabela.

Depois de especificar os argumentos de linha de comando, você poderá acessar o valor do argumento no método OnLaunched do aplicativo. O objeto LaunchActivatedEventArgsargs terá uma propriedade Arguments com o valor definido para o texto no campo argumentos de linha de comando .

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

Modos de autenticação

Há três modos de autenticação para implantação de computador remoto:

  • Universal (Protocolo Não Criptografado): use esse modo de autenticação sempre que estiver implantando em um dispositivo remoto. Atualmente, isso é para dispositivos IoT, dispositivos Xbox e dispositivos HoloLens, bem como computadores com Windows Versão 1703 (Atualização para Criadores) ou posterior. Universal (protocolo não criptografado) só deve ser usado em redes confiáveis. A conexão de depuração é vulnerável a usuários mal-intencionados que podem interceptar e alterar dados sendo passados entre o computador de desenvolvimento e o computador remoto.
  • Windows: esse modo de autenticação destina-se apenas a ser usado para um computador remoto (desktop ou laptop) que executa as Ferramentas Remotas do Visual Studio. Use esse modo de autenticação quando tiver acesso às credenciais do usuário conectado do computador de destino. Esse é o canal mais seguro para implantação remota.
  • Nenhum: esse modo de autenticação destina-se apenas a ser usado para um computador remoto (desktop ou laptop) que executa as Ferramentas Remotas do Visual Studio. Use esse modo de autenticação quando você tiver um computador de teste configurado em um ambiente que tenha uma conta de teste assinada e você não puder inserir as credenciais. Verifique se as configurações do depurador remoto estão definidas para não aceitar nenhuma 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 Depurar para propriedades do projeto.

As novas propriedades incluem:

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

Requisitos

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

  • Tenha o Visual Studio 2015 Update 3 ou algumas versões posteriores do Visual Studio instaladas 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 com a Atualização de Aniversário do Windows 10 ou um computador com o 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 será semelhante à seguinte.

propriedades CS ou VB

Para um aplicativo UWP C++, a página de propriedades será semelhante à seguinte.

propriedades do Cpp

Copiar arquivos para o dispositivo

Copiar arquivos para o dispositivo transferirá fisicamente os arquivos pela rede para o dispositivo remoto. Ele copiará e registrará o layout do pacote criado no caminho da pasta layout . O Visual Studio manterá os arquivos copiados para o dispositivo em sincronia com os arquivos em seu projeto do Visual Studio; no entanto, há uma opção para manter todos os arquivos no dispositivo , mesmo aqueles que não fazem mais parte do 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 em que 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 compartilharem o mesmo dispositivo e trabalharem em pacotes com alguma variação de build.

Observação

Copiar arquivos para o dispositivo atualmente tem suporte no Xbox executando a Atualização de Aniversário do Windows 10 e computadores executando o Windows 10 Creators Update.

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

Registrar layout da rede

Ao optar por registrar o layout a partir da rede, você pode criar o layout do pacote em um compartilhamento de rede e registrá-lo diretamente no dispositivo remoto a partir da rede. Isso requer que você especifique um caminho de pasta de layout (um compartilhamento de rede) acessível a partir do dispositivo remoto. O caminho da propriedade da pasta de layout é definido em relação ao PC que executa o Visual Studio, enquanto o caminho da propriedade de registro do pacote é o mesmo, exceto que é especificado em relação ao dispositivo remoto.

Para registrar com êxito o layout da rede, primeiro você deve tornar o caminho da pasta do Layout uma pasta de rede compartilhada. Para fazer isso, clique com o botão direito do mouse na pasta no Explorador de Arquivos, selecione Compartilhar com > Pessoas específicase escolha os usuários com os quais você deseja compartilhar a pasta. Ao tentar registrar o layout a partir da rede, você receberá uma solicitação de credenciais para garantir que está se registrando como um usuário com acesso à unidade compartilhada.

Para obter ajuda com isso, confira os seguintes exemplos:

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

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

    • caminho da pasta de layout = \\NETWORK-SHARE\Layouts\App1
    • caminho de registro do pacote = \\NETWORK-SHARE\Layouts\App1

Quando você registrar o layout pela primeira vez da 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.

Você não pode selecionar manter todos os arquivos no dispositivo ao registrar o layout da rede porque nenhum arquivo é copiado fisicamente para o dispositivo remoto.

Observação

O layout de registro da rede é atualmente suportado no Xbox com a Atualização de Aniversário do Windows 10 e em PCs com o Windows 10 Creators Update.

No dispositivo remoto, o layout é registrado no seguinte local padrão, dependendo da família de dispositivos: Xbox: \\MY-DEVKIT\DevelopmentFiles\XrfsFiles - esse é 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 é aprimorado iniciando e suspendendo aplicativos proativamente em uma técnica chamada pré-lançamento. Muitos aplicativos não precisarão fazer nada especial para funcionar nesse modo, mas alguns aplicativos talvez precisem 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.

Há suporte para depuração em um projeto do Visual Studio (Depurar –>Outros Destinos de Depuração –>Depurarde Pré-lançamento do Aplicativo Universal do Windows ) e para aplicativos já instalados no o computador ( de depuração –>outros de destinos de depuração –>depurar o pacote de aplicativos instalado selecionando a caixa de seleção Ativar o aplicativo com a caixa de seleção Pré-inicialização). Para obter mais informações, consulte Depurar pré-lançamento do UWP .

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

  • Permitir de 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. Essa isenção permite testar procedimentos de comunicação em um único computador. Antes de enviar seu aplicativo para a Microsoft Store, você deve testar seu aplicativo sem a isenção.

    Para remover a isenção de loopback de rede do aplicativo:

    • Na página de propriedades de C# e Visual Basic de depuração, desmarque a caixa de seleção Permitir loopback de rede local.
    • Na página de propriedades de depuração de JavaScript e C++, defina o valor permitir loopback de rede local como No.
  • Não inicie, mas depure meu código quando ele for iniciado/Iniciar o Aplicativo

    Para configurar a implantação para iniciar automaticamente uma sessão de depuração quando o aplicativo for iniciado:

    • Na página de propriedades de depuração do C# e do Visual Basic, selecione o Não iniciar, mas depure meu código quando ele iniciar caixa de seleção.
    • Na página de propriedades de Depuração de do JavaScript e do C++, defina o valor do aplicativo de inicialização como Sim.

Símbolos

Os arquivos de símbolo contêm uma variedade de dados muito úteis ao depurar o código, como variáveis, nomes de funções e endereços de ponto de entrada, o que permite entender 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 por meio do Microsoft Symbol Server ou podem ser baixados para pesquisas offline e mais rápidas em Baixar pacotes de símbolos do Windows.

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

caixa de diálogo Opções

Para carregar símbolos em uma sessão de depuração com WinDbg, defina a variável para o local do pacote de símbolos. Por exemplo, a execução do comando a seguir carregará símbolos do Microsoft Symbol Server e os armazenará 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 ‘;’ 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

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

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

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

Ao contrário do Visual Studio, a maior parte da funcionalidade principal do WinDbg depende do fornecimento de comandos para a janela de comando. Os comandos fornecidos permitem exibir o estado de execução, investigar despejos de memória no modo de usuário e depurar em diversos 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 do WinDbg, consulte Comandos do Depurador.