Compartilhar via


Depurar aplicativos ClickOnce que usam o System.Deployment.Application

No Visual Studio, a implantação do ClickOnce permite que você configure como um aplicativo é atualizado. No entanto, se você quiser usar e personalizar recursos avançados de implantação do ClickOnce, precisará ter acesso ao modelo de objeto de implantação fornecido por System.Deployment.Application. Você pode usar as System.Deployment.Application APIs para tarefas avançadas, como:

  • Criando uma opção "Atualizar Agora" em seu aplicativo

  • Downloads condicionais sob demanda de vários componentes do aplicativo

  • Atualizações integradas diretamente ao aplicativo

  • Garantindo que o aplicativo cliente esteja sempre up-to-date

    Como as System.Deployment.Application APIs funcionam somente quando um aplicativo é implantado com a tecnologia ClickOnce, a única maneira de depurá-las é implantar o aplicativo usando ClickOnce, anexá-lo e depurá-lo. Pode ser difícil anexar o depurador com antecedência suficiente, pois esse código geralmente é executado na inicialização do aplicativo e é acionado antes que você consiga anexar o depurador. Uma solução é fazer quebras (ou paradas, para projetos do Visual Basic) antes do código de verificação de atualização ou do código sob demanda.

    A técnica de depuração recomendada é a seguinte:

Observação

A ApplicationDeployment classe e as APIs no System.Deployment.Application namespace não são compatíveis com .NET Core e .NET 5 e versões posteriores. No .NET 7, há suporte para um novo método de acesso às propriedades de implantação do aplicativo. Para obter mais informações, consulte as propriedades de implantação do Access ClickOnce no .NET. O .NET 7 não dá suporte ao equivalente aos métodos ApplicationDeployment.

  1. Antes de começar, verifique se os arquivos de símbolo (.pdb) e os arquivos de origem estão arquivados.

  2. Implante a versão 1 do aplicativo.

  3. Crie uma nova solução em branco. No menu Arquivo , selecione Novo e, em seguida, Projeto. Na caixa de diálogo Novo Projeto , abra o nó Outros Tipos de Projeto e selecione a pasta Soluções do Visual Studio . No painel Modelos , selecione Solução em Branco.

  4. Adicione o local de origem arquivado às propriedades dessa nova solução. No Gerenciador de Soluções, clique com o botão direito do mouse no nó da solução e selecione Propriedades. Na caixa de diálogo Páginas de Propriedades , selecione Depurar Arquivos de Origem e, em seguida, adicione o diretório do código-fonte arquivado. Caso contrário, o depurador localizará os arquivos de origem desatualizados, pois os caminhos do arquivo de origem são registrados no arquivo .pdb . Se o depurador usar arquivos de origem desatualizados, você verá uma mensagem informando que a origem não corresponde.

  5. Verifique se o depurador pode encontrar os arquivos .pdb . Se você implantou os arquivos com seu aplicativo, o depurador os encontrará automaticamente. Sempre verifica primeiro ao lado do conjunto em questão. Caso contrário, você precisará adicionar o caminho do arquivo à sua lista de locais de arquivo de símbolo.

    Abra o painel de Ferramentas (ou Depuração) >Opções, e expanda a seção Todas as Configurações>Depuração>Símbolos>Locais de Pesquisa. Adicione, altere a ordem ou remova itens da lista de locais de arquivos de símbolos (.pdb).

    Abra a caixa de diálogo Ferramentas (ou Depuração) >Opções e expanda a seção de Depuração>Símbolos. Adicione, altere a ordem ou remova itens da lista de locais de pesquisa do arquivo de símbolos (.pdb).

  6. Depure o que acontece entre o CheckForUpdate e os Download/Update métodos.

    Por exemplo, o código de atualização pode ser o seguinte:

        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If My.Application.Deployment.IsNetworkDeployed Then
    
                If (My.Application.Deployment.CheckForUpdate()) Then
    
                    My.Application.Deployment.Update()
                    Application.Restart()
    
                End If
    
            End If
        End Sub
    
  7. Implantar a versão 2.

  8. Tente anexar o depurador ao aplicativo versão 1 enquanto ele baixa uma atualização para a versão 2. Como alternativa, você pode usar o System.Diagnostics.Debugger.Break método ou simplesmente Stop no Visual Basic. É claro que você não deve deixar essas chamadas de método no código de produção.

    Por exemplo, suponha que você esteja desenvolvendo um aplicativo do Windows Forms e tenha um manipulador de eventos para esse método com a lógica de atualização nele. Para depurar isso, basta anexar antes que o botão seja pressionado e, em seguida, definir um ponto de interrupção (certifique-se de abrir o arquivo arquivado apropriado e definir o ponto de interrupção lá).

    Use a propriedade IsNetworkDeployed para invocar as System.Deployment.Application APIs apenas quando o aplicativo for implantado; as APIs não devem ser invocadas durante a depuração no Visual Studio.