Поделиться через


Отладка приложений ClickOnce, использующих System.Deployment.Application

В Visual Studio развертывание ClickOnce позволяет настроить обновление приложения. Однако если вы хотите использовать и настраивать расширенные функции развертывания ClickOnce, вам потребуется доступ к объектной модели развертывания, предоставленной System.Deployment.Application. Вы можете использовать API System.Deployment.Application для сложных задач, таких как:

  • Создание параметра Update Now в приложении

  • По запросу, условные загрузки различных компонентов приложения

  • Обновления, интегрированные непосредственно в приложение

  • Обеспечение того, что клиентское приложение всегда обновлено

    System.Deployment.Application Так как API работают только при развертывании приложения с помощью технологии ClickOnce, единственным способом их отладки является развертывание приложения с помощью ClickOnce, присоединение к нему, а затем отладка. Достаточно рано подключить отладчик может быть сложно, так как этот код часто запускается при запуске и выполнении приложения, прежде чем подключить отладчик. Решение заключается в том, чтобы поместить точки останова (или остановки для проектов Visual Basic) перед кодом проверки обновлений или запрашиваемым кодом.

    Рекомендуемая методика отладки выглядит следующим образом:

Замечание

Класс ApplicationDeployment и API в System.Deployment.Application пространстве имен не поддерживаются в .NET Core и .NET 5 и более поздних версиях. В .NET 7 поддерживается новый метод доступа к свойствам развертывания приложения. Дополнительные сведения см. в разделе "Свойства развертывания Access ClickOnce" в .NET. .NET 7 не поддерживает эквивалент методов ApplicationDeployment.

  1. Перед началом работы убедитесь, что файлы символов (PDB) и исходные файлы архивируются.

  2. Разверните версию 1 приложения.

  3. Создайте пустое решение. В меню "Файл" выберите "Создать", а затем " Проект". В диалоговом окне "Новый проект" откройте узел "Другие типы проектов ", а затем выберите папку "Решения Visual Studio ". В области "Шаблоны " выберите "Пустое решение".

  4. Добавьте архивное расположение источника в свойства для этого нового решения. В обозревателе решений щелкните правой кнопкой мыши узел решения, а затем выберите "Свойства". В диалоговом окне "Страницы свойств" выберите "Отладочные исходные файлы", а затем добавьте каталог архивированного исходного кода. В противном случае отладчик находит устаревшие исходные файлы, так как пути к исходному файлу записываются в PDB-файле . Если отладчик использует устаревшие исходные файлы, появится сообщение о том, что источник не соответствует.

  5. Убедитесь, что отладчик может найти PDB-файлы . При развертывании файлов с приложением отладчик находит их автоматически. Сначала он всегда выглядит рядом с сборкой. В противном случае необходимо добавить архивный путь к списку расположений файлов символов.

    Откройте панель инструментов (или отладки) >параметры и разверните раздел Все настройки>отладка>символов>места поиска. Добавление, изменение порядка или удаление элементов из списка расположений файла символов (PDB ).

    Откройте диалоговое окно "Параметры инструментов" (или >") и разверните раздел "Отладочные>символы". Добавьте, измените порядок или удалите элементы из списка расположений поиска в файле символов (.pdb).

  6. Отладьте, что происходит между вызовами методов CheckForUpdate и Download/Update.

    Например, код обновления может быть следующим:

        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. Разверните версию 2.

  8. Попытайтесь подключить отладчик к приложению версии 1, пока он скачивает обновление для версии 2. Кроме того, можно использовать System.Diagnostics.Debugger.Break метод или просто Stop в Visual Basic. Конечно, эти вызовы метода не следует оставлять в рабочем коде.

    Например, предположим, что вы разрабатываете приложение Windows Forms, и у вас есть обработчик событий для этого метода с логикой обновления в нем. Чтобы выполнить отладку, просто вложите его перед нажатием кнопки, а затем установите точку останова (убедитесь, что откроется соответствующий архивированный файл и установите там точку останова).

    IsNetworkDeployed Используйте свойство для вызова System.Deployment.Application API только в том случае, если приложение развертывается; API-интерфейсы не должны вызываться во время отладки в Visual Studio.