Откройте приложение Windows Phone 7 в эмуляторе с помощью командной строки

Есть ли способ открыть приложение Windows Phone 7 в эмуляторе с помощью командной строки?

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

Я знаю, что это возможно для приложений XNA (информация здесь ), но я не знаю, возможно ли это для приложений, сделанных под Silverlight framework?!

Позднее редактирование — проблема РЕШЕНА

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

Platform WP7SDK = dsmgrObj.GetPlatforms().Single(p => p.Name == "New Windows Mobile 7 SDK");

в линию:

Platform WP7SDK = dsmgrObj.GetPlatforms().Single(p => p.Name == "Windows Phone 7");

Я использовал foreach для получения имен платформ:

 // iterate over all platforms and write their names
 foreach (Platform p in dsmgrObj.GetPlatforms().ToList<Platform>())
 {
    Console.WriteLine("Platform: " + p.Name);
 }

и строка:

WP7Device = WP7SDK.GetDevices().Single(d => d.Name == "Windows Phone 7 Emulator");

в линию:

WP7Device = WP7SDK.GetDevices().Single(d => d.Name == "Windows Phone Emulator");

Снова использовал foreach :

 // iterate over all devces and write their names
                foreach (Device d in WP7SDK.GetDevices().ToList<Device>())
                {
                    Console.WriteLine("Device: " + d.Name);
                }

person Paul    schedule 30.08.2011    source источник
comment
Можете ли вы пояснить, почему ответ Джеффа Уилкокса на вопрос Скотта, на который вы ссылались, не отвечает на ваш собственный вопрос?   -  person Rowland Shaw    schedule 30.08.2011
comment
@Rowland Shaw: я не хочу что-то добавлять в код ... У меня просто есть файл xap, и я хочу знать, можно ли запустить его с помощью какой-либо командной строки. Завтра я внимательно изучу сообщение в блоге Джастина Энджела. Спасибо.   -  person Paul    schedule 30.08.2011
comment
Сообщение в блоге Джастина подробно описывает, как добавить это приложение в эмулятор без необходимости изменять сам XAP.   -  person Rowland Shaw    schedule 30.08.2011
comment
Вот мой первый вопрос: как мне создать консольное приложение? У меня нет шаблона консольного приложения... Я установил Windows Phone SDK 7.1 RC   -  person Paul    schedule 02.09.2011
comment
@Rowland Shaw: присмотревшись, мне показалось, что запись в блоге Джастина идеально подходит для моей ситуации. Спасибо!   -  person Paul    schedule 06.09.2011


Ответы (1)


Как уже упоминалось, вы должны подписаться на сообщение в блоге Джастина Ангела. Конечным результатом является очень простое приложение командной строки, которое вы запускаете, среди прочего, для установки вашего файла XAP на эмулятор/телефон и запускаете это приложение.

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

// ... code to get command line parameters, device instance etc ...

if (WP7Device.IsApplicationInstalled(appID)) {
    Console.WriteLine("Found {0} XAP on Windows Phone 7 Emulator/Device...", appName);
    app = WP7Device.GetApplication(appID);
    app.TerminateRunningInstances();
    app.UpdateApplication("NormalApp", 
                           appLocation + @"\ApplicationIcon.png", 
                           appLocation + @"\Bin\" + configuration + @"\" + appName + @".xap");

     Console.WriteLine("{0} XAP Updated from Windows Phone 7 Emulator/Device...", appName);
} else {
    // Install XAP
    Console.WriteLine("Installing {0} XAP to Windows Phone 7 Emulator/Device...", appName);
    app = WP7Device.InstallApplication(appID,
                                       appID,
                                       "NormalApp",
                                       appLocation + @"\ApplicationIcon.png",
                                       appLocation + @"\Bin\" + configuration + @"\" + appName + @".xap");
     Console.WriteLine("{0} XAP installed to Windows Phone 7 Emulator...", appName);
}
// Launch Application 
Console.WriteLine("Launching {0} on Windows Phone 7 Emulator...", appName);
app.Launch();
Console.WriteLine("Launched {0} on Windows Phone 7 Emulator...", appName);

Привет, Аласдер

person ajmccall    schedule 31.08.2011
comment
Привет, Аласдер, и спасибо за твой ответ. У меня есть проблема для начала: как мне создать консольное приложение? У меня нет шаблона консольного приложения... Я установил Windows Phone SDK 7.1 RC - person Paul; 02.09.2011
comment
@Paul, если у вас есть Visual Studio Express 2010, просто нажмите Пуск -> Microsoft Visu... 2010 -> Microsoft Visual Studio C# 2010 Express. Оттуда вы можете создать новое консольное приложение так же, как вы создали бы свое приложение для Windows Phone 7. Скопируйте блог Джастина и создайте. Автономный exe теперь будет находиться в подкаталоге bin. Затем вы можете использовать этот exe-файл для запуска, установки и запуска приложения WP7 из командной строки. - person ajmccall; 02.09.2011
comment
@Alasdair: мне пришлось создать консольное приложение, и поскольку на моем ПК была установлена ​​только Visual Studio 2010 Express для Windows Phone, я не мог этого сделать - см. здесь . Итак, просмотрев таблицу по приведенной выше ссылке, я скачал Visual C# 2010 Express, и теперь я смог создать консольное приложение, но мне пришлось внести некоторые изменения - я обновил свои вопросы с деталями. Мне также очень пригодилась ваша версия с обновлением приложения вместо его удаления. Большое спасибо! - person Paul; 06.09.2011
comment
Также мне удалось добавить параметр в командную строку, следуя инструкциям здесь. - person Paul; 06.09.2011
comment
Интересно, есть ли какие-либо другие API-интерфейсы для подключения устройств, которые можно использовать для развертывания приложений WP7?! - person Paul; 06.09.2011