Débogage des applications ClickOnce qui utilisent System.Deployment.Application

Dans Visual Studio, le déploiement de ClickOnce vous permet de configurer la façon dont une application est mise à jour. Toutefois, si vous devez utiliser et personnaliser des fonctionnalités de déploiement de ClickOnce avancées, vous devrez accéder au modèle objet de déploiement fourni par System.Deployment.Application. Vous pouvez utiliser les API System.Deployment.Application pour des tâches avancées, telles que :

  • Création d'une option "Mettre à jour maintenant" dans votre application

  • Téléchargements conditionnels, à la demande de différents composants d'application

  • Mises à jour intégrées directement dans l'application

  • Garantie que l'application cliente est toujours à jour

Dans la mesure où les API System.Deployment.Application fonctionnent uniquement lorsqu'une application est déployée avec la technologie ClickOnce, la seule façon de les déboguer consiste à déployer l'application à l'aide de ClickOnce, à l'attacher, puis à la déboguer. Il peut être difficile d'attacher le débogueur suffisamment tôt, car ce code s'exécute souvent au démarrage de l'application, avant que vous puissiez attacher le débogueur. Une solution consiste à placer des instructions break (ou stop, pour les projets Visual Basic) avant votre code de contrôle de mise à jour ou votre code à la demande.

La technique de débogage recommandée est la suivante :

  1. Avant de commencer, assurez-vous que le symbole (.pdb) et les fichiers sources sont archivés.

  2. Déployez la version 1 de l'application.

  3. Créez une solution vierge. Dans le menu Fichier, cliquez sur Nouveau, puis sur Projet. Dans la boîte de dialogue Nouveau projet, ouvrez le nœud Autres types de projets, puis sélectionnez le dossier Solutions Visual Studio. Dans le volet Modèles, sélectionnez Nouvelle solution.

  4. Ajoutez l'emplacement source archivé aux propriétés pour cette nouvelle solution. Dans l'Explorateur de solutions, cliquez avec le bouton droit sur le nœud de solution, puis cliquez sur Propriétés. Dans la boîte de dialogue Pages de propriétés, sélectionnez Fichiers sources pour le débogage, puis ajoutez le répertoire du code source archivé. Sinon, le débogueur recherchera les fichiers sources obsolètes, puisque les chemins d'accès aux fichiers sources sont enregistrés dans le fichier .pdb. Si le débogueur utilise des fichiers sources obsolètes, un message indiquant que la source ne correspond pas s'affiche.

  5. Assurez-vous que le débogueur peut trouver les fichiers .pdb. Si vous les avez déployés avec votre application, le débogueur les trouve automatiquement. Il cherche toujours en premier à côté de l'assembly en question. Sinon, vous devrez ajouter le chemin du dossier d'archivage aux Emplacements du fichier de symboles (.pdb) (pour accéder à cette option, dans le menu Outils, cliquez sur Options, puis ouvrez le nœud Débogage et cliquez sur Symboles).

  6. Déboguez ce qui se produit entre les appels de méthode CheckForUpdate et Download/Update.

    Par exemple, le code de mise à jour peut être le suivant :

        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. Déployez la version 2.

  8. Essayez de joindre le débogueur à la version 1 de l'application pendant le téléchargement d'une mise à jour pour la version 2. Vous pouvez également utiliser la méthode System.Diagnostics.Debugger.Break ou simplement Stop en Visual Basic. Bien sûr, vous ne devez pas laisser ces appels de méthode dans le code de production.

    Par exemple, supposons que vous développiez une application Windows Forms et que vous possédiez pour cette méthode un gestionnaire d'événements contenant la logique de mise à jour. Pour déboguer cela, procédez simplement à l'attachement avant d'appuyer sur le bouton, puis définissez un point d'arrêt (veillez à ouvrir le fichier archivé correct et à définir le point d'arrêt à cet endroit).

Utilisez la propriété IsNetworkDeployed pour appeler les API System.Deployment.Application uniquement lorsque l'application est déployée ; les API ne doivent pas être appelées pendant le débogage dans Visual Studio.

Voir aussi

Référence

System.Deployment.Application