Развертывание и отладка приложений UWP

В этой статье описаны шаги по целевым объектам развертывания и отладки.

Microsoft Visual Studio позволяет выполнять развертывание и отладку приложений универсальной платформы Windows (UWP) на различных устройствах с Windows 10. Visual Studio будет обрабатывать процесс создания и регистрации приложения на целевом устройстве.

Выбор целевого объекта развертывания

Чтобы выбрать целевой объект, перейдите в раскрывающийся список "Целевой объект отладки отладки" рядом с кнопкой "Начать отладку" и выберите целевой объект, в который нужно развернуть приложение. После выбора целевого объекта нажмите кнопку "Начать отладку" (F5), чтобы развернуть и выполнить отладку в этом целевом объекте, или нажмите клавиши CTRL+F5 , чтобы просто развернуть в этом целевом объекте.

Список целевых объектов устройства отладки

  • Симулятор развернет приложение в имитируемой среде на текущем компьютере разработки. Этот параметр доступен только в том случае, если версия целевой платформы приложения меньше или равна операционной системе на компьютере разработки.
  • Локальный компьютер развернет приложение на текущем компьютере разработки. Этот параметр доступен только в том случае, если версия целевой платформы приложения меньше или равна операционной системе на компьютере разработки.
  • Удаленный компьютер позволит указать удаленный целевой объект для развертывания приложения. Дополнительные сведения о развертывании на удаленном компьютере см. в разделе "Указание удаленного устройства".
  • Устройство развернет приложение на usb-подключенном устройстве. Устройство должно быть разблокировано разработчиком и разблокировано экран.
  • Целевой объект эмулятора загрузит и развернет приложение в эмуляторе с конфигурацией, указанной в имени. Эмуляторы доступны только на компьютерах с поддержкой Hyper-V под управлением Windows 8.1 или более поздней версии.

Отладка развернутых приложений

Visual Studio также может присоединиться к любому работающему процессу приложения UWP, выбрав "Отладка" и " Присоединить к процессу". Присоединение к запущенным процессам не требует исходного проекта Visual Studio, но загрузка символов процесса поможет значительно при отладке процесса, для которых не используется исходный код.

Кроме того, любой установленный пакет приложения можно подключить и отладить, выбрав "Отладка", "Другие" и " Отладка установленных пакетов приложений".

Диалоговое окно

При нажатии кнопки "Не запускать", но отладка кода при запуске приведет к подключению отладчика Visual Studio к приложению UWP при его запуске в пользовательское время. Это эффективный способ отладки путей управления из различных методов запуска, таких как активация протокола с пользовательскими параметрами.

Приложения UWP можно разрабатывать и скомпилировать в Windows 8.1 или более поздней версии, но для запуска Windows 10. Если вы разрабатываете приложение UWP на компьютере с Windows 8.1, вы можете удаленно отлаживать приложение UWP, работающее на другом устройстве Windows 10, при условии, что узел и целевой компьютер находятся в одной локальной сети. Для этого скачайте и установите Инструменты удаленной отладки для Visual Studio на обоих компьютерах. Установленная версия должна соответствовать существующей версии Visual Studio, выбранной архитектуре (x86, x64) также должна соответствовать версии целевого приложения.

Макет пакета

В обновлении 3 для Visual Studio 2015 мы добавили для разработчиков возможность указывать путь макета для приложений UWP. Это определяет, где макет пакета копируется на диск при создании приложения. По умолчанию это свойство устанавливается относительно корневого каталога проекта. Если это свойство не изменить, поведение останется таким же, как и для предыдущих версий Visual Studio.

Это свойство можно изменить в свойствах отладки проекта.

Если вы хотите включить все файлы макета в пакет при создании пакета для приложения, необходимо добавить свойство <IncludeLayoutFilesInPackage>true</IncludeLayoutFilesInPackage>проекта.

Чтобы добавить это свойство, выполните указанные ниже действия.

  1. Щелкните проект правой кнопкой мыши и выберите " Выгрузить проект".
  2. Щелкните проект правой кнопкой мыши и выберите "Изменить [имя проекта].xxproj (.xxproj будет изменяться в зависимости от языка проекта).
  3. Добавьте свойство и перезагрузите проект.

Указание удаленного устройства

C# и Microsoft Visual Basic

Чтобы указать удаленный компьютер для приложений C# или Microsoft Visual Basic, выберите удаленный компьютер в раскрывающемся списке целевого объекта отладки. Откроется диалоговое окно "Удаленные подключения" , которое позволит указать IP-адрес или выбрать обнаруженное устройство. По умолчанию выбран универсальный режим проверки подлинности. Сведения о том, какой режим проверки подлинности следует использовать, см. в разделе "Режимы проверки подлинности".

Диалоговое окно

Чтобы вернуться к этому диалогу, можно открыть свойства проекта и перейти на вкладку "Отладка ". Выберите " Найти рядом с удаленным компьютером ":

Вкладки отладчика

Чтобы развернуть приложение на удаленном компьютере с обновлением ниже Creators Update, вам также понадобится скачать и установить инструменты удаленной отладки для Visual Studio на целевом компьютере. Полные инструкции см . в инструкциях по удаленному компьютеру. Но компьютеры с обновлением Creators Update и выше также поддерживают удаленное развертывание.

C++ и JavaScript

Чтобы указать целевой удаленный компьютер для приложения UWP на языке C++ или JavaScript, сделайте следующее:

  1. В Обозреватель решений щелкните проект правой кнопкой мыши и выберите пункт "Свойства".
  2. Перейдите к параметрам отладки и в разделе "Отладчик", чтобы запустить, выберите удаленный компьютер.
  3. Введите имя компьютера (или щелкните "Найти", чтобы найти его), а затем задайте свойство "Тип проверки подлинности".

Отладка страниц свойств

После указания компьютера можно выбрать удаленный компьютер в раскрывающемся списке отладочного целевого объекта, чтобы вернуться к указанному компьютеру. Одновременно можно выбрать только один удаленный компьютер.

Инструкции по удаленному компьютеру

Примечание.

Эти инструкции необходимы только для более старых версий Windows 10. Начиная с обновления Creators Update компьютер можно рассматривать как Xbox. То есть вы можете включить обнаружение устройств в меню "Режим разработчика" на компьютере и использовать универсальную проверку подлинности для связывания PIN-кодов и подключения к компьютеру.

Чтобы выполнить развертывание на удаленном компьютере с версией обновления ниже Creators Update, на целевой компьютер необходимо установить инструменты удаленной отладки Visual Studio. Удаленный компьютер также должен работать с версией Windows, которая больше или равно свойству целевой платформы приложений Min. Версия . После установки удаленных средств необходимо запустить удаленный отладчик на целевом компьютере.

Для этого найдите удаленный отладчик в меню "Пуск", откройте его и, если появится запрос, разрешите отладчику настроить параметры брандмауэра. По умолчанию отладчик запускается с проверка подлинности Windows. Для этого потребуются учетные данные пользователя, если пользователь, вошедшего в систему, не совпадает с обоими компьютерами.

Чтобы изменить параметр на без проверки подлинности, в Удаленном отладчике, перейдите в раздел Инструменты ->Параметры и установите значение Без проверки подлинности. После настройки удаленного отладчика необходимо также убедиться, что устройство узла установлено в режиме разработчика. После этого можно развернуть с компьютера разработки.

Дополнительные сведения см. на странице Центр загрузки Visual Studio.

Передача аргументов отладки командной строки

В Visual Studio 2019 можно передать аргументы отладки командной строки при запуске отладки приложений UWP. Доступ к аргументам отладки командной строки можно получить в параметре args метода OnLaunched класса Application. Чтобы указать аргументы отладки командной строки, откройте окно свойств проекта и перейдите к вкладке Отладка.

Примечание.

Эта функция доступна в Visual Studio 2017 (версия 15.1) для C#, VB и C++. JavaScript доступен в более поздних версиях. Аргументы отладки командной строки доступны для всех типов развертывания, кроме симулятора.

Для проектов C# и VB UWP поле Аргументы командной строки: будет расположено под разделом Параметры запуска.

Command line arguments

Для проектов C++ и JS UWP поле Аргументы командной строки отобразится в разделе Свойства отладки.

Снимок экрана: страница свойств App 4 с параметром отладки свойств > конфигурации, выбранным свойством аргументов командной строки, отображается в таблице.

Задав аргументы командной строки, можно получить доступ к значению аргумента в методе OnLaunched приложения. Объект LaunchActivatedEventArgsargs будет иметь свойство Arguments, которому будет присвоено значение из поля Аргументы командной строки.

Снимок экрана: аргументы командной строки для C++ и JS.

Режимы проверки подлинности

Существует три режима проверки подлинности для удаленного развертывания компьютера:

  • Универсальный (незашифрованный протокол): при развертывании на удаленном устройстве используйте этот режим проверки подлинности. На данный момент он используется для устройств IoT, Xbox и HoloLens, а также для компьютеров с версией Windows 1703 (Creators Update) или новее. Универсальный (незашифрованный протокол) должен использоваться только в доверенных сетях. Подключение отладки уязвимо для вредоносных пользователей, которые могут перехватывать и изменять данные, передаваемые между разработкой и удаленным компьютером.
  • Windows: этот режим проверки подлинности предназначен только для удаленного компьютера (рабочего стола или ноутбука) с помощью средств удаленной работы Visual Studio. Используйте этот режим проверки подлинности, если у вас есть доступ к учетным данным пользователя, вошедшего в систему целевого компьютера. Это самый безопасный канал для удаленного развертывания.
  • Нет. Этот режим проверки подлинности предназначен только для удаленного компьютера (рабочего стола или ноутбука) с помощью средств удаленной работы Visual Studio. Используйте этот режим проверки подлинности, если у вас есть тестовая машина, настроенная в среде с тестовой учетной записью, вошедшего в систему, и вы не можете ввести учетные данные. Убедитесь, что параметры удаленного отладчика не принимают проверку подлинности.

Дополнительные параметры удаленного развертывания

В обновлении 3 для Visual Studio 2015 и юбилейном обновлении Windows 10 появились новые расширенные параметры удаленного развертывания для некоторых устройств с Windows 10. Дополнительные параметры удаленного развертывания можно найти в меню отладки для свойств проекта.

К новым свойствам относятся следующие:

  • Тип развертывания
  • Путь регистрации пакета
  • Сохранение всех файлов на устройстве, даже тех, которые больше не являются частью макета

Требования

Чтобы использовать расширенные варианты удаленного развертывания, необходимо выполнить следующие требования:

  • Установите Visual Studio 2015 с обновлением 3 или более поздний выпуск Visual Studio с набором средств для Windows 10 версии 1.4.1 или более поздней (который включает пакет SDK для юбилейного обновления Windows 10). Мы рекомендуем всегда использовать последнюю версию Visual Studio со всеми обновлениями, чтобы использовать новейшие функции разработки и безопасности.
  • Выберите удаленное устройство Xbox с юбилейным обновлением Windows 10 или компьютер с обновлением Windows 10 Creators Update в качестве целевого устройства.
  • Использование универсального режима проверки подлинности

Страницы свойств

Для приложения UWP на C# или Visual Basic страница свойств будет выглядеть следующим образом.

Свойства CS или VB

Для приложения UWP на C++ страница свойств будет выглядеть следующим образом.

Свойства Cpp

Копирование файлов на устройство

Копирование файлов на устройство физически передает файлы через сеть на удаленное устройство. Он копирует и регистрирует макет пакета, созданный в путь к папке Layout. Visual Studio сохранит файлы, скопированные на устройство, в синхронизации с файлами в проекте Visual Studio; однако есть возможность сохранить все файлы на устройстве , даже те, которые больше не являются частью макета. При выборе этого параметра все файлы, ранее скопированные на удаленное устройство, но больше не являются частью проекта, останутся на удаленном устройстве.

Путь регистрации пакета, указанный при копировании файлов на устройство, — это физическое расположение на удаленном устройстве, где копируются файлы. Этот путь можно указать как любой относительный путь. Расположение, в котором развертываются файлы, будет относительно корневого каталога файлов разработки, которые будут отличаться в зависимости от целевого устройства. Указание этого пути полезно для нескольких разработчиков совместного использования одного устройства и работы с пакетами с некоторой дисперсией сборки.

Примечание.

Функция копирования файлов на устройство сейчас поддерживается на Xbox с юбилейным обновлением Windows 10 и компьютерах с Windows 10 Creators Update.

На удаленном устройстве макет копируется в следующее расположение по умолчанию: \\MY-DEVKIT\DevelopmentFiles\PACKAGE-REGISTRATION-PATH

Регистрация макета из сети

При регистрации макета из сети можно создать макет пакета в сетевую папку, а затем зарегистрировать макет на удаленном устройстве непосредственно из сети. Для этого необходимо указать путь к папке макета (сетевую папку), доступную с удаленного устройства. Свойство пути к папке Layout — это путь относительно компьютера под управлением Visual Studio, а свойство пути регистрации пакета совпадает с тем же путем, но указано относительно удаленного устройства.

Чтобы успешно зарегистрировать макет из сети, сначала необходимо сделать путь к папке макета общей сетевой папкой. Для этого щелкните правой кнопкой мыши по папке в "Проводник", выберите Поделиться > Конкретные пользователи, а затем выберите пользователей, с которыми хотите поделиться папкой. При попытке зарегистрировать макет из сети вам будет предложено предоставить учетные данные, чтобы убедиться, что вы регистрируетесь в качестве пользователя с доступом к общей папке.

Дополнительные сведения см. в следующих примерах:

  • Пример 1 (локальная папка макета, доступная как сетевая папка):

    • Путь к папке макета = D:\Layouts\App1
    • Путь регистрации пакета = \\NETWORK-SHARE\Layouts\App1
  • Пример 2 (папка макета сети):

    • Путь к папке макета = \\NETWORK-SHARE\Layouts\App1
    • Путь регистрации пакета = \\NETWORK-SHARE\Layouts\App1

При первой регистрации макета из сети учетные данные будут кэшироваться на целевом устройстве, поэтому вам не нужно многократно выполнять вход. Чтобы удалить кэшированные учетные данные, можно использовать средство WinAppDeployCmd.exe из пакета SDK для Windows 10 с командой deletecreds .

Вы не можете сохранить все файлы на устройстве при регистрации макета из сети, так как файлы физически не копируются на удаленное устройство.

Примечание.

Функция Зарегистрировать макет из сети сейчас поддерживается на Xbox с юбилейным обновлением Windows 10 и компьютерах с Windows 10 Creators Update.

На удаленном устройстве макет регистрируется в следующем расположении по умолчанию в зависимости от семейства устройства: Xbox: \\MY-DEVKIT\DevelopmentFiles\XrfsFiles — это символьная ссылка на путь регистрации пакета. Компьютер не использует символьную ссылку и вместо этого непосредственно регистрирует путь регистрации пакета.

Варианты для отладки

В Windows 10 скорость запуска приложений UWP увеличена благодаря применению технологии предварительного запуска для запуска и приостановки приложений. Многие приложения не должны делать ничего специального для работы в этом режиме, но некоторым приложениям может потребоваться изменить их поведение. Для отладки любых проблем в этих путях кода можно начать отладку приложения из Visual Studio в режиме предварительного запуска.

Отладку можно выполнить как из проекта Visual Studio (Отладка ->Другие целевые объекты отладки ->Отладить предварительный запуск универсального приложения для Windows), так и для приложений, уже установленных на компьютер (Отладка ->Другие целевые объекты отладки ->Отладить установленный пакет приложения, установив флажок в поле Активировать приложение с помощью предварительного запуска). Дополнительные сведения см. в разделе "Отладка UWP" (Предварительная отладка UWP).

Можно задать следующие параметры развертывания на странице свойств отладки запускаемого проекта:

  • Разрешить замыкание на себя в локальной сети

    По соображениям безопасности приложение UWP, установленное в стандартном режиме, не может выполнять сетевые вызовы к устройству, на котором он установлен. По умолчанию Visual Studio создает для развертываемого приложения исключение из этого правила. Это исключение позволяет тестировать процедуры обмена данными на одном компьютере. Перед отправкой приложения в Microsoft Store необходимо проверить работу приложения без использования исключений.

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

    • На странице свойств отладки C# и Visual Basic снимите флажок "Разрешить обратный цикл локальной сети".
    • На странице свойств отладки JavaScript и C++ задайте для параметра Allow Local Network Loopback значение No.
  • "Не запускать, а отлаживать мой код при открытии" или "Запустить приложение"

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

    • На странице свойств отладки C# и Visual Basic выберите параметр "Не запускать", но отлаживать код при запуске флажка.
    • На странице свойств отладки JavaScript и C++ задайте для параметра "Запустить приложение" значение "Да".

Символы

Файлы символов содержат множество очень полезных данных при отладке кода, таких как переменные, имена функций и адреса точек входа, что позволяет лучше понять исключения и порядок выполнения вызовов. Символы для большинства вариантов Windows доступны через microsoft Symbol Server или можно скачать для более быстрого автономного поиска в скачивание пакетов символов Windows.

Чтобы задать параметры символов для Visual Studio, выберите Инструменты > Параметры, а затем перейдите в раздел Отладка > Символы в открывшемся диалоговом окне.

диалоговое окно «Параметры»

Чтобы загрузить символы в сеанс отладки с помощью WinDbg, задайте переменную симпата в расположение пакета символов. Например, при выполнении следующей команды будут загружаться символы из сервера символов Майкрософт, а затем кэшировать их в каталоге C:\Symbols:

.sympath SRV*C:\Symbols*http://msdl.microsoft.com/download/symbols
.reload

Можно добавить дополнительные пути с помощью ‘;’ разделителя или использовать .sympath+ команду. Дополнительные операции символов, использующие WinDbg, см. в разделе "Открытые и частные символы".

WinDbg

WinDbg — это мощный отладчик, который поставляется в составе набора средств отладки для Windows, который входит в пакет SDK для Windows. Установка пакета SDK для Windows позволяет устанавливать средства отладки для Windows в качестве автономного продукта. Хотя очень полезно для отладки машинного кода, мы не рекомендуем WinDbg для приложений, написанных в управляемом коде или HTML5.

Чтобы использовать WinDbg с приложениями UWP, необходимо сначала отключить управление жизненным циклом процессов (PLM) для пакета приложения с помощью PLMDebug, как описано в статье "Тестирование и отладка средств для управления жизненным циклом процессов( PLM)".

plmdebug /enableDebug [PackageFullName] ""C:\Program Files\Debugging Tools for Windows (x64)\WinDbg.exe\" -server npipe:pipe=test"

В отличие от Visual Studio, большая часть основных функций WinDbg зависит от предоставления команд в командном окне. Предоставленные команды позволяют просматривать состояние выполнения, исследовать аварийные дампы в режиме пользователя и выполнять отладку в различных режимах.

Одной из самых популярных команд в WinDbg является !analyze -vто, что используется для получения подробных сведений о текущем исключении, включая:

  • FAULTING_IP: указатель инструкций во время сбоя
  • EXCEPTION_RECORD: адрес, код и флаги текущего исключения
  • STACK_TEXT: трассировка стека до исключения

Полный список всех команд WinDbg см. в разделе "Команды отладчика".