Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
В 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.
Перед началом работы убедитесь, что файлы символов (PDB) и исходные файлы архивируются.
Разверните версию 1 приложения.
Создайте пустое решение. В меню "Файл" выберите "Создать", а затем " Проект". В диалоговом окне "Новый проект" откройте узел "Другие типы проектов ", а затем выберите папку "Решения Visual Studio ". В области "Шаблоны " выберите "Пустое решение".
Добавьте архивное расположение источника в свойства для этого нового решения. В обозревателе решений щелкните правой кнопкой мыши узел решения, а затем выберите "Свойства". В диалоговом окне "Страницы свойств" выберите "Отладочные исходные файлы", а затем добавьте каталог архивированного исходного кода. В противном случае отладчик находит устаревшие исходные файлы, так как пути к исходному файлу записываются в PDB-файле . Если отладчик использует устаревшие исходные файлы, появится сообщение о том, что источник не соответствует.
Убедитесь, что отладчик может найти PDB-файлы . При развертывании файлов с приложением отладчик находит их автоматически. Сначала он всегда выглядит рядом с сборкой. В противном случае необходимо добавить архивный путь к списку расположений файлов символов.
Откройте панель инструментов (или отладки) >параметры и разверните раздел Все настройки>отладка>символов>места поиска. Добавление, изменение порядка или удаление элементов из списка расположений файла символов (PDB ).
Откройте диалоговое окно "Параметры инструментов" (или >") и разверните раздел "Отладочные>символы". Добавьте, измените порядок или удалите элементы из списка расположений поиска в файле символов (.pdb).
Отладьте, что происходит между вызовами методов
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Разверните версию 2.
Попытайтесь подключить отладчик к приложению версии 1, пока он скачивает обновление для версии 2. Кроме того, можно использовать
System.Diagnostics.Debugger.Breakметод или простоStopв Visual Basic. Конечно, эти вызовы метода не следует оставлять в рабочем коде.Например, предположим, что вы разрабатываете приложение Windows Forms, и у вас есть обработчик событий для этого метода с логикой обновления в нем. Чтобы выполнить отладку, просто вложите его перед нажатием кнопки, а затем установите точку останова (убедитесь, что откроется соответствующий архивированный файл и установите там точку останова).
IsNetworkDeployed Используйте свойство для вызова System.Deployment.Application API только в том случае, если приложение развертывается; API-интерфейсы не должны вызываться во время отладки в Visual Studio.