Фон
С точки зрения разработчика, основным преимуществом Windows 10 является ее новая универсальная платформа Windows (UWP) .
* Где «универсальный» действительно означает «универсальный для всех устройств, работающих под управлением Windows 10», а не «универсальный для устройств, работающих под управлением не только Windows 10, но также Windows 8.1 и, возможно, Windows 7». Поэтому, если вы создаете приложение UWP, вы на самом деле просто создаете «приложение для Windows 10». Приложения UWP не будут работать даже на устройствах Windows 8.1 и Windows Phone 8.1, то есть они вообще не совместимы с предыдущими версиями.
По состоянию на третий квартал 2015 года Windows 10 доступна для ПК и устройств IoT . Пройдет еще как минимум несколько месяцев, прежде чем Windows 10 Mobile будет выпущен для широкой публики, но, вероятно, не более года. Это означает, что Windows Phone 8.1 будет еще какое-то время.
Вопрос
Я собираюсь приступить к разработке приложения для Windows Phone и планирую опубликовать его в течение следующего месяца или около того, поскольку это довольно простое приложение. Поскольку Windows 10 Mobile не появится в ближайшее время, не говоря уже о том, чтобы обновлять устройства по всему миру, я должен пока настроить Windows Phone 8.1. Однако, так как он не будет , что задолго до того, для Windows 10 мобильных роллов, я задаюсь вопросом , если бы целесообразно подготовить мое решение для развертывания в Windows 10 UWP , а также Windows Phone 8.1 (который также позволит мне продолжать поддерживать 8.1 столько, сколько мне нужно).
Я вижу, что я могу сгруппировать проект UWP и проект 8.1 в одном решении и совместно использовать исходные файлы и ресурсы через общий проект, как это было сделано с помощью универсального шаблона Windows 8.1 в Visual Studio. Я на правильном пути? Если да, есть ли какие-либо дополнительные рекомендации, которым я должен следовать, чтобы гарантировать, что все (включая XAML, так как в идеале я хотел бы иметь одинаковый или хотя бы одинаковый интерфейс на обеих платформах) действительно работает правильно на обеих платформах с учетом любых несоответствий?
В качестве альтернативы, я мог бы просто сейчас не беспокоиться о Windows 10 Mobile и начать с проекта 8.1, а затем перенести его на UWP , но мне все равно придется поддерживать обе версии моего приложения, поскольку я не планирую переход на 8.1 пользователи сразу. В этом случае мне все равно придется беспокоиться о паритете функциональности / XAML.
Ответы:
Как вы сказали в одном из ваших комментариев, лучший способ сделать это - использовать общий проект и добавить к нему несколько заголовков. В вашем случае голова Windows Phone 8.1 и голова UWP. Эта позиция была также выражена в MVA Джерри Никсоном и Энди Уигли (я думаю, что это так, но с тех пор оно обновлялось), в разделе о переносе 8.1-приложений на uwp.
В вашем совместном проекте вам, возможно, придется использовать директивы условной компиляции, чтобы различать код, выполняемый в uwp и phone 8.1. (Как при создании универсальных приложений для Windows 8.1 / Phone 8.1)
источник
В зависимости от особенностей Windows, в которой должно быть ваше приложение, вы можете использовать платформу, например Xamarin, которая позволит вам писать не только для Windows, но также для iOS и Android в одной кодовой базе.
источник
Исходя из моего опыта: стоит поместить несколько помощников / логики / и т.д. в библиотеки PCL. Затем вы можете создать два проекта (для UWP и WP8 соответственно), которые могут использовать PCL с нулевыми изменениями. Кроме того, вы можете делиться сервисами, просматривать модели и модели (с очень небольшим количеством строк условной компиляции #if).
Единственной вещью, которой НЕ стоит делиться, является персонал, связанный с пользовательским интерфейсом, так как слишком много вещей нужно переключить / подготовить (поэтому гораздо проще подготовить отдельные макеты для каждого из UWP и WP8, даже если они практически одинаковы).
PS Я сделал это для UWP и WP8.1 Silverlight
источник