В настоящее время я работаю над проектом 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) | Название проекта (вы его не видели? ) (Например: MyWPApp) |
$ (ConfigurationName) | Используемая конфигурация, например «release» или «debug» |
$ (PlatformName) | Выбранная архитектура процессора, например «AllCpu», «ARM», «x86» |
С этими
переменными мы получаем полный путь к файлу xap. Последний параметр указывает использовать эмулятор, передавая индекс, который мы определили в начале этого поста.
полномочий
Вот и все. Перестройте свое решение и посмотрите приложение запуска эмулятора, разверните и запустите его. Теперь каждый раз, когда вы изменяете код приложения и нажимаете кнопку отладки, оно будет собираться и развертываться в обоих эмуляторах. Один из эмуляторов должен иметь эти номера отладки сбоку, чтобы было легко распознать, к какому из них подключен отладчик.
Вывод
Используя очень простой сценарий после сборки и включенный в WP8 инструмент XapDeployCmd, очень легко развернуть приложение на двух устройствах одновременно. Это не требуется очень часто, но при создании чего-то, что соединяет пользователей друг с другом (например, приложение чата или многопользовательская игра), это может избавить вас от некоторых хлопот. Просто убедитесь, что ваш скрипт использует другую версию эмулятора, чем Visual Studio 2012.