Debuggen von ClickOnce-Anwendungen, die System.Deployment.Application verwenden

Aktualisiert: November 2007

In Visual Studio können Sie mit der ClickOnce-Bereitstellung konfigurieren, wie eine Anwendung aktualisiert wird. Wenn Sie jedoch die erweiterten ClickOnce-Bereitstellungsfeatures verwenden und anpassen möchten, müssen Sie auf das Bereitstellungsobjektmodell zugreifen, das von System.Deployment.Application bereitgestellt wird. Sie können die System.Deployment.Application-APIs u. a. für die folgenden erweiterten Aufgaben verwenden:

  • Erstellen einer "Jetzt Aktualisieren"-Option in der Anwendung

  • Bedingte, bedarfsabhängige Downloads verschiedener Anwendungskomponenten

  • Direkt in die Anwendung integrierte Aktualisierungen

  • Garantieren, dass die Clientanwendung immer auf dem aktuellen Stand ist

Da die System.Deployment.Application-APIs nur funktionieren, wenn eine Anwendung mithilfe der ClickOnce-Technologie bereitgestellt wird, können Sie sie nur debuggen, indem Sie die Anwendung mit ClickOnce bereitstellen, einen Debugger an die Anwendung anhängen und sie dann debuggen. Es kann sehr schwierig sein, den Debugger rechtzeitig anzuhängen, da der Code oftmals beim Anwendungsstart ausgeführt wird, bevor Sie es schaffen, den Debugger anzuhängen. Sie können break-Anweisungen einzufügen (bzw. stop-Anweisungen in Visual Basic-Projekten), bevor Sie eine Aktualisierungsprüfung für Code oder bedarfsabhängigen Code durchführen.

Folgendes Debugverfahren wird empfohlen:

  1. Stellen Sie vor dem Start sicher, dass die Symboldateien (.pdb) und die Quelldateien archiviert sind.

  2. Stellen Sie Version 1 der Anwendung bereit.

  3. Erstellen Sie eine neue leere Projektmappe. Klicken Sie im Menü Datei zuerst auf Neu und dann auf Projekt. Öffnen Sie im Dialogfeld Neues Projekt den Knoten Andere Projekttypen, und wählen Sie anschließend den Ordner Visual Studio-Projektmappen aus. Wählen Sie im Bereich Vorlagen die Option Leere Projektmappe.

  4. Fügen Sie den Eigenschaften der neuen Projektmappe den Speicherort der archivierten Quellen hinzu. Klicken Sie im Projektmappen-Explorer mit der rechten Maustaste auf den Projektmappenknoten, und klicken Sie dann auf Eigenschaften. Wählen Sie im Dialogfeld Eigenschaftenseiten die Option Quelldateien debuggen, und fügen Sie das Verzeichnis mit dem archivierten Quellcode hinzu. Ansonsten findet der Debugger die veralteten Quelldateien, da die Quelldateipfade in der PDB-Datei aufgezeichnet werden. Wenn der Debugger veraltete Quelldateien verwendet, wird eine Meldung angezeigt, die Sie darüber informiert, dass die Quelle nicht passend ist.

  5. Stellen Sie sicher, dass der Debugger die PDB-Dateien finden kann. Wenn Sie sie mit der Anwendung bereitgestellt haben, werden sie vom Debugger automatisch gefunden. Der Debugger sucht immer zuerst neben der fraglichen Assembly. Andernfalls müssen Sie den Archivpfad zu Speicherorte für Symboldateien (.pdb) hinzufügen (um auf diese Option zuzugreifen, klicken Sie im Menü Extras auf Optionen, öffnen Sie dann den Knoten Debuggen, und klicken Sie auf Symbole).

  6. Debuggen Sie den gesamten Code zwischen dem CheckForUpdate-Methodenaufruf und den Download/Update-Methodenaufrufen.

    Der Aktualisierungscode könnte z. B. folgendermaßen aussehen:

        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. Stellen Sie Version 2 bereit.

  8. Versuchen Sie, den Debugger an Version 1 der Anwendung anzuhängen, während diese den Download für die Aktualisierung auf Version 2 durchführt. Alternativ können Sie auch die System.Diagnostics.Debugger.Break-Methode oder Stop in Visual Basic verwenden. Natürlich sollten Sie diese Methodenaufrufe aus dem Produktionscode entfernen.

    Angenommen, Sie entwickeln eine WinForms-Anwendung und verfügen über einen Ereignishandler für diese Methode mit der Aktualisierungslogik. Hängen Sie zum Debuggen einfach vor dem Drücken der Taste den Debugger an, und legen Sie anschließend einen Haltepunkt fest (stellen Sie sicher, dass Sie die passende archivierte Datei öffnen, und den Haltepunkt dort festlegen).

Verwenden Sie die IsNetworkDeployed-Eigenschaft, um die System.Deployment.Application-APIs nur dann aufzurufen, wenn die Anwendung bereitgestellt wird. Die APIs sollten nicht beim Debuggen in Visual Studio aufgerufen werden.

Siehe auch

Aufgaben

Technologiebeispiel für die Bereitstellung von ClickOnce OnDemand

Referenz

System.Deployment.Application