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.
Przed rozpoczęciem upewnij się, że pliki symboli (.pdb) i pliki źródłowe są archiwizowane.
Wdróż wersję 1 aplikacji.
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.
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.
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).
Debuguj, co się dzieje między wywołaniami
CheckForUpdate
metody i/Download
Update
.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
Wdrażanie wersji 2.
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 prostuStop
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.