Статьи

Запустите приложение WP8 на двух эмуляторах одновременно

В настоящее время я работаю над проектом Windows Phone 8, который требует двух устройств. Эти устройства общаются друг с другом через сервис SignalR. Благодаря Hyper-V я могу протестировать / отладить этот проект на двух экземплярах эмулятора Windows Phone 8 (я обычно выбираю версии WVGA и WVGA 512MB). Я использовал развертывание XAP на одном эмуляторе и отладку на втором. Мне нужно делать это каждый раз, когда я меняю приложение, мне надоело делать это вручную, так что пришло время автоматизировать это.

Поскольку Visual Studio 2012 создает приложение каждый раз, когда изменяется его кодовая база, я могу использовать для этого сценарий после сборки, ведь приложение должно устанавливаться на оба эмулятора только после его изменения (я потратил время на поиск решения, позволяющего сценарию запускать каждый раз, когда я нажимаю кнопку отладки, но, похоже, в VS2012 этого не сделать).

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

Выбор эмулятора для скрипта

Microsoft предоставила инструмент командной строки для развертывания файлов xap как на устройстве, так и на эмуляторах. Прежде чем мы сможем его использовать, нам нужно знать правильный индекс эмулятора, который мы хотим использовать в скрипте. Скопируйте и вставьте этот скрипт в текстовый файл и сохраните его как файл .bat, дважды щелкните по нему, и вы увидите список всех доступных эмуляторов на вашем компьютере (если, конечно, у вас установлен Windows Phone 8 SDK).

    cd "%ProgramFiles(x86)%\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment"
    XapDeployCmd.exe /EnumerateDevices
    pause

XapDeployCmd.exe — это инструмент командной строки для всего, что связано с развертыванием XAP. Более подробную информацию об инструменте можно найти на MSDN

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

Сборка сценария

Время начинать строить сценарий. В своем проекте Windows Phone 8 перейдите в свойства проекта на вкладку «События сборки». В окне командной строки события Post-build введите этот скрипт.

    cd %ProgramFiles(x86)%\Microsoft SDKs\Windows Phone\v8.0\Tools\XAP Deployment
    XapDeployCmd.exe /installlaunch $(TargetDir)$(ProjectName)_$(ConfigurationName)_$(PlatformName).xap /targetdevice:1

Первая строка скрипта перемещает командную строку в папку, в которой находится XapDeployCmd (это путь установки по умолчанию, инструмент поставляется с WP8 SDK). Вторая строка запускает инструмент и передает необходимые параметры. параметр installaunch указывает, что приложение должно установить (или обновить) приложение и запустить его после завершения. После параметра installaunch нам нужно указать путь к файлу xap, по умолчанию (при использовании конфигурации отладки в VS2012) он находится в папке bin / debug и называется что-то вроде MyWPApp_debug_anycpu.xap. Чтобы облегчить перенос скрипта, я использовал переменные вместо жесткого кодирования пути и имени xap. Вот краткое изложение.

переменная Смысл
$ (TargetDir) полный путь к выходному каталогу (например: c: \ users \ nico \ documents \ Projects \ MyWPApp \ bin \ debug \).

Имейте в виду, что последний «\» всегда включается при использовании этой переменной

$ (ProjectName) Название проекта (вы его не видели? Glimlach) (Например: MyWPApp)
$ (ConfigurationName) Используемая конфигурация, например «release» или «debug»
$ (PlatformName) Выбранная архитектура процессора, например «AllCpu», «ARM», «x86»

С этими
переменными

полномочий
мы получаем полный путь к файлу xap. Последний параметр указывает использовать эмулятор, передавая индекс, который мы определили в начале этого поста.

Вот и все. Перестройте свое решение и посмотрите приложение запуска эмулятора, разверните и запустите его. Теперь каждый раз, когда вы изменяете код приложения и нажимаете кнопку отладки, оно будет собираться и развертываться в обоих эмуляторах. Один из эмуляторов должен иметь эти номера отладки сбоку, чтобы было легко распознать, к какому из них подключен отладчик.

Вывод

Используя очень простой сценарий после сборки и включенный в WP8 инструмент XapDeployCmd, очень легко развернуть приложение на двух устройствах одновременно. Это не требуется очень часто, но при создании чего-то, что соединяет пользователей друг с другом (например, приложение чата или многопользовательская игра), это может избавить вас от некоторых хлопот. Просто убедитесь, что ваш скрипт использует другую версию эмулятора, чем Visual Studio 2012.