Partilhar via


Depurar aplicativos ClickOnce que usam System.Deployment.Application

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

  • Criar uma opção "Atualizar agora" na sua aplicação

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

  • Atualizações integradas diretamente no aplicativo

  • Garantir que a aplicação do cliente está sempre atualizada

    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, em seguida, depurá-lo. Pode ser difícil anexar o depurador cedo o suficiente, porque esse código geralmente é executado quando o aplicativo inicia e funciona antes que você possa anexar o depurador. Uma solução é colocar pausas (ou paradas, para projetos do Visual Basic) antes do código de verificação de atualização ou código sob demanda.

    A técnica de debugging recomendada é a seguinte:

Observação

A classe ApplicationDeployment e as APIs no namespace System.Deployment.Application não são suportadas no .NET Core e no .NET 5 e versões posteriores. No .NET 7, um novo método de acessar propriedades de implantação de aplicativo é suportado. Para obter mais informações, consulte Acessar propriedades de implantação do ClickOnce no .NET. O .NET 7 não suporta o 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. Criar 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 a localização da origem arquivada às propriedades desta 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 adicione o diretório do código-fonte arquivado. Caso contrário, o depurador localizará os arquivos de origem desatualizados, porque 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 fonte não corresponde.

  5. Certifique-se de que o depurador pode encontrar os arquivos .pdb . Se você implantou os arquivos com seu aplicativo, o depurador os localizará automaticamente. Ele sempre verifica primeiro ao lado da montagem em questão. Caso contrário, precisará adicionar o caminho do ficheiro à sua lista de localizações de ficheiros de símbolos.

    Abra o painel Ferramentas (ou Depuração) > e expanda a seção Opções, Configurações> de Depuração, > e >. Adicione, altere a ordem ou remova itens da lista de locais do arquivo 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 as chamadas dos métodos CheckForUpdate e Download/Update.

    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. Implante a versão 2.

  8. Tente anexar o depurador ao aplicativo da 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, 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 Windows Forms e tenha um manipulador de eventos para esse método com a lógica de atualização. Para depurar isso, basta anexar antes que o botão seja pressionado e, em seguida, defina um ponto de interrupção (certifique-se de abrir o arquivo arquivado apropriado e definir o ponto de interrupção lá).

    Use a IsNetworkDeployed propriedade para invocar as System.Deployment.Application APIs somente quando a aplicação estiver implantada. As APIs não devem ser invocadas durante a depuração no Visual Studio.