С появлением Windows Phone 8.1 разработчики приложений для Windows Phone столкнулись с дилеммой: Visual Studio 2013 уже не поддерживает WP 7, а Visual Studio 2012 еще не поддерживает WP 8.1. Эта статья поможет решить данную проблему.
Введение
Вплоть до настоящего времени разработчики приложений для Windows Phone 7 и Windows Phone 8 могли использовать Visual Studio 2012 как универсальное решение для обеих платформ. Однако с выходом Visual Studio 2013 поддержка WP 7 была прекращена, и в процессе разработки приходилось быстро переключаться с одного проекта на другой.
Наиболее распространенный вариант организации совместного использования кода этими двумя платформами подразумевает, что в одном проекте будет сам код C#, а в другом — ссылка на него (см. Performing code reuse in Windows Phone («Повторное использование кода в Windows Phone»)).
Если вы собираетесь добавить в свое приложение новые возможности, реализованные в Windows Phone 8.1 (а вы, без сомнения, собираетесь), то проще всего создать отдельный проект для WP 8.1 и скопировать в него нужные фрагменты кода. Но VS 2012 не поддерживает проекты для WP 8.1! Вы должны использовать VS 2013 Update 2, чтобы создать решение для WP 8.1.
Неужели придется отказаться от поддержки WP 7, чтобы получить доступ к новым возможностям WP 8.1? И оставить своих клиентов на платформе WP 7 без поддержки приложения?
Такие радикальные меры ни к чему!
Идея для решения
Формат проекта Visual Studio практически не изменился с версии VS 2010. В общем случае можно открыть решение, разработанное в VS 2012, в версии VS 2013, сохранить его там, а затем вновь открыть в VS 2012.
Если вы попробуете открыть решение VS 2012 с проектом для WP 7 в версии VS 2013, то увидите предупреждение. Открыть проект WP 7 не удастся, однако работоспособности он не утратит. С другими проектами вы можете беспрепятственно работать, не опасаясь негативных последствий.
Практика
Возможный вариант — создать проект WP 8.1 в версии 2013 Update 2 и включить его в решение WP 7/8. Вы можете создать ссылку на файлы исходного кода из проекта WP 7, даже если проект не открывается в VS 2013.
Ниже показан пример составного решения в VS 2012. Имеются отдельные проекты для WP7, WP8 и WP8 (последний ориентирован на анонсированные возможности версии WP8NTapp).
После того как вы завершите все необходимые манипуляции с проектом для WP 8.1, решение можно снова открыть в VS 2012, чтобы поработать с проектом WP 7. Как и в случае с проектом для WP 7 в версии VS 2013, в VS 2012 вам не удастся открыть проект WP 8.1, но с остальными проектами проблем не возникнет.
VS 2013 выведет на экран следующее диалоговое окно:
Увеличить
Примечание. Обязательно снимите флажок для проекта (ов) WP7.
Решение в VS 2013 выглядит следующим образом:
Далее необходимо преобразовать проект WP8NTapp в проект Silverlight 8.1, выбрав в контекстном меню вариант Retarget to Windows Phone 8.1 (Изменить целевую платформу проекта на Windows Phone 8.1). Связанные исходные файлы останутся нетронутыми, но решение изменится следующим образом:
Повторное открытие решения в VS 2012 временно сделает проект WP8NTapp несовместимым:
Заключение
Работать с одним и тем же решением поочередно в двух версиях Visual Studio неудобно, однако так вы по крайней мере сможете сохранить поддержку всех трех платформ. При этом можно будет использовать код даже из неподдерживаемого приложения.