Udostępnij za pośrednictwem


Debugowanie aplikacji ClickOnce korzystających z elementu System.Deployment.Application

W programie Visual Studio wdrożenie technologii ClickOnce umożliwia skonfigurowanie sposobu aktualizowania aplikacji. Jeśli jednak musisz użyć i dostosować zaawansowane funkcje wdrażania technologii ClickOnce, musisz uzyskać dostęp do modelu obiektów wdrożenia udostępnionego przez System.Deployment.Applicationusługę . Interfejsy API można używać System.Deployment.Application do wykonywania zaawansowanych zadań, takich jak:

  • Tworzenie opcji "Aktualizuj teraz" w aplikacji

  • Warunkowe pobieranie na żądanie różnych składników aplikacji

  • Aktualizacje zintegrowane bezpośrednio z aplikacją

  • Zagwarantowanie, że aplikacja kliencka jest zawsze aktualna

    System.Deployment.Application Ponieważ interfejsy API działają tylko wtedy, gdy aplikacja jest wdrażana za pomocą technologii ClickOnce, jedynym sposobem ich debugowania jest wdrożenie aplikacji przy użyciu technologii ClickOnce, dołączenie do niej, a następnie debugowanie. Może być trudno dołączyć debuger wystarczająco wcześnie, ponieważ ten kod często jest uruchamiany podczas uruchamiania i wykonywania aplikacji przed dołączeniem debugera. Rozwiązaniem jest umieszczenie przerw (lub zatrzymań dla projektów Visual Basic) przed sprawdzeniem kodu aktualizacji lub kodu na żądanie.

    Zalecana technika debugowania jest następująca:

Uwaga

Klasy ApplicationDeployment i interfejsy API w System.Deployment.Application przestrzeni nazw nie są obsługiwane w wersjach .NET Core i .NET 5 i nowszych. W programie .NET 7 jest obsługiwana nowa metoda uzyskiwania dostępu do właściwości wdrażania aplikacji. Aby uzyskać więcej informacji, zobacz Access ClickOnce deployment properties in .NET (Uzyskiwanie dostępu do właściwości wdrożenia ClickOnce na platformie .NET). Platforma .NET 7 nie obsługuje odpowiedników metod ApplicationDeployment.

  1. Przed rozpoczęciem upewnij się, że pliki symboli (.pdb) i pliki źródłowe są archiwizowane.

  2. Wdróż wersję 1 aplikacji.

  3. Utwórz nowe puste rozwiązanie. W menu Plik kliknij pozycję Nowy, a następnie pozycję Projekt. W oknie dialogowym Nowy projekt otwórz węzeł Inne typy projektów, a następnie wybierz folder Rozwiązania programu Visual Studio. W okienku Szablony wybierz pozycję Puste rozwiązanie.

  4. Dodaj zarchiwizowana lokalizacja źródłowa do właściwości tego nowego rozwiązania. W Eksplorator rozwiązań kliknij prawym przyciskiem myszy węzeł rozwiązania, a następnie kliknij polecenie Właściwości. W oknie dialogowym Strony właściwości wybierz pozycję Debuguj pliki źródłowe, a następnie dodaj katalog zarchiwizowanego kodu źródłowego. W przeciwnym razie debuger znajdzie nieaktualne pliki źródłowe, ponieważ ścieżki plików źródłowych są rejestrowane w pliku .pdb. Jeśli debuger używa nieaktualnych plików źródłowych, zostanie wyświetlony komunikat z informacją, że źródło nie jest zgodne.

  5. Upewnij się, że debuger może znaleźć pliki .pdb . Jeśli wdrożono je z aplikacją, debuger znajdzie je automatycznie. Zawsze wygląda obok zestawu, o których mowa, najpierw. W przeciwnym razie należy dodać ścieżkę archiwum do lokalizacji pliku symboli (pdb) (aby uzyskać dostęp do tej opcji, w menu Narzędzia kliknij pozycję Opcje, a następnie otwórz węzeł Debugowanie , a następnie kliknij przycisk Symbole).

  6. Debuguj, co się dzieje między wywołaniami CheckForUpdate metody i/DownloadUpdate .

    Na przykład kod aktualizacji może być następujący:

        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. Wdrażanie wersji 2.

  8. Spróbuj dołączyć debuger do aplikacji w wersji 1 podczas pobierania aktualizacji dla wersji 2. Alternatywnie możesz użyć System.Diagnostics.Debugger.Break metody lub po prostu Stop w Visual Basic. Oczywiście nie należy pozostawiać tych wywołań metod w kodzie produkcyjnym.

    Załóżmy na przykład, że tworzysz aplikację Windows Forms i masz procedurę obsługi zdarzeń dla tej metody z logiką aktualizacji. Aby to debugować, po prostu dołącz przed naciśnięciem przycisku, a następnie ustaw punkt przerwania (upewnij się, że otworzysz odpowiedni zarchiwizowany plik i ustaw tam punkt przerwania).

    IsNetworkDeployed Użyj właściwości , aby wywołać System.Deployment.Application interfejsy API tylko wtedy, gdy aplikacja jest wdrożona. Interfejsy API nie powinny być wywoływane podczas debugowania w programie Visual Studio.