Compartilhar via


Depurando aplicativos ClickOnce que usam System.Deployment.Application

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

  • Criar uma opção "Atualizar agora" em seu aplicativo

  • Sob demanda condicionais, downloads de vários componentes do aplicativo

  • Integrado diretamente no aplicativo de atualizações

  • Garantindo que o aplicativo cliente esteja sempre atualizado

Porque o System.Deployment.Application APIs funcionam apenas quando um aplicativo é implantado com ClickOnce tecnologia, a única maneira de depurá-los é implantar o aplicativo usando ClickOnce, anexar a ele e depurá-lo. Pode ser difícil anexar o depurador antecipado suficiente, pois esse código é executado com freqüência quando o aplicativo é iniciado e é executada antes que você pode anexar o depurador. Uma solução é colocar as quebras de (ou pare, para projetos de Visual Basic) antes do seu código de sob demanda ou o código de verificação de atualização.

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

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

  2. Implante a versão 1 do aplicativo.

  3. Crie uma nova solução em branco. Do arquivo menu, clique em nova, em seguida, projeto. No Novo projeto caixa de diálogo aberta a Other Project Types nó, em seguida, selecione o Visual Studio soluções de pasta. No painel Templates, selecione Blank Solution.

  4. Adicione o local de origem arquivada para as propriedades para essa nova solução. Em Solution Explorer, o botão direito do mouse no nó da solução, e clique em Propriedades. No Páginas de propriedades caixa de diálogo, selecione Debug Source Files, em seguida, adicionar o diretório do código fonte arquivados. Caso contrário, o depurador encontrará os arquivos de origem desatualizados, desde que os caminhos de arquivo de origem são registrados no arquivo. PDB. Se o depurador usa arquivos de origem desatualizados, verá uma mensagem informando que a fonte não corresponde.

  5. Verifique se que o depurador pode encontrar os arquivos. PDB. Se você implantou-los com o seu aplicativo, o depurador encontrá-las automaticamente. Sempre parece próximo ao assembly em questão pela primeira vez. Caso contrário, você precisará adicionar o caminho do arquivo para o Symbol file (. PDB) locations (para acessar essa opção, da Ferramentas menu, clique em Opções, em seguida, abra o Debugging nó e clique em símbolos).

  6. Depurar o que acontece entre a CheckForUpdate e Download/Update chamadas de método.

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

        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. Tentativa de anexar o depurador para o aplicativo de versão 1 durante seu download de uma atualização para a versão 2. Como alternativa, você pode usar o System.Diagnostics.Debugger.Break método ou simplesmente Stop em Visual Basic. Obviamente, você não deve deixar essas chamadas de método no código de produção.

    Por exemplo, suponha que você está desenvolvendo um aplicativo Windows Forms e você tiver um manipulador de eventos para este método com a lógica de atualização nela. Para depurar a isso, basta anexar antes que o botão é pressionado, em seguida, defina um ponto de interrupção (Certifique-se de que você abre o arquivo arquivado apropriado e definir o ponto de interrupção de lá).

Use o IsNetworkDeployed propriedade para invocar o System.Deployment.Application APIs somente quando o aplicativo for implantado; as APIs não deve ser chamadas durante a depuração em Visual Studio.

Consulte também

Referência

System.Deployment.Application