Поделиться через


Переход от среды выполнения Windows 8.x к UWP

Если у вас есть универсальное приложение 8.1 , независимо от того, предназначено ли оно для Windows 8.1, Windows Phone 8.1 или обоих, вы найдете, что исходный код и навыки будут плавно переноситься в Windows 10. В Windows 10 вы можете создать приложение универсальная платформа Windows (UWP), которое является одним пакетом приложения, который клиенты могут установить на каждом устройстве. Дополнительные сведения о приложениях UWP для Windows 10 и концепциях адаптивного кода и адаптивного пользовательского интерфейса, которые мы рассмотрим в этом руководстве по переносу, см . в руководстве по приложениям UWP.

При переносе вы увидите, что Windows 10 использует большинство API с предыдущими платформами, а также разметкой XAML, платформой пользовательского интерфейса и инструментами, и вы найдете все это с уверенностью знакомы. Как и раньше, вы можете выбрать между C++, C#и Visual Basic для языка программирования, который будет использоваться вместе с платформой пользовательского интерфейса XAML. Ваши первые шаги в планировании именно того, что делать с текущим приложением или приложениями, будут зависеть от типов приложений и проектов, которые у вас есть. Это объясняется в следующих разделах.

Если у вас есть универсальное приложение 8.1

Универсальное приложение 8.1 создается из проекта универсального приложения 8.1. Предположим, что имя проекта AppName_81. Он содержит эти вложенные проекты.

  • AppName_81.Windows. Это проект, который создает пакет приложения для Windows 8.1.
  • AppName_81.WindowsPhone. Это проект, который создает пакет приложения для Windows Phone 8.1.
  • AppName_81.Shared. Это проект, содержащий исходный код, файлы разметки и другие ресурсы и ресурсы, используемые обеими другими проектами.

Часто универсальное приложение Для Windows версии 8.1 предоставляет одни и те же функции и делает это с использованием одного кода и разметки в формах Windows 8.1 и Windows Phone 8.1. Такое приложение является идеальным кандидатом для переноса в одно приложение Windows 10, которое предназначено для семейства универсальных устройств (и которое можно установить на самом широком диапазоне устройств). По сути, вы переведете содержимое общего проекта, и вам потребуется использовать мало или ничего из других проектов, так как в них будет мало или ничего.

В других случаях windows 8.1 и (или) форма Windows Phone 8.1 приложения содержит уникальные возможности. Или они содержат те же функции, но они реализуют эти функции с помощью различных методов или различных технологий. С таким приложением можно перенести его в одно приложение, которое предназначено для семейства универсальных устройств (в этом случае приложение будет адаптироваться к разным устройствам), или вы можете перенести его в виде нескольких приложений, возможно, для семейства классических устройств и другого, нацеливающегося на семейство мобильных устройств. Характер универсального приложения 8.1 определяет, какой из этих вариантов лучше всего подходит для вашего дела.

  1. Перенос содержимого общего проекта в приложение, предназначенное для семейства универсальных устройств. Если применимо, удалите любое другое содержимое из проектов Windows и WindowsPhone и используйте это содержимое либо безусловно в приложении, либо условно на устройстве, на котором ваше приложение будет работать в то время (последнее поведение называется адаптивным).
  2. Перенос содержимого проекта WindowsPhone в приложение, предназначенное для семейства универсальных устройств. Если применимо, удалите любое другое содержимое из проекта Windows, используя его безоговорочно или адаптивно.
  3. Перенос содержимого проекта Windows в приложение, предназначенное для семейства универсальных устройств. Если применимо, спасите любое другое содержимое из проекта WindowsPhone, используя его безоговорочно или адаптивно.
  4. Перенос содержимого проекта Windows в приложение, ориентированное на семейство универсальных или классических устройств, а также перенос содержимого проекта WindowsPhone в приложение, предназначенное для универсального или семейства мобильных устройств. Вы можете создать решение с общим проектом и продолжить совместно использовать исходный код, файлы разметки и другие ресурсы и ресурсы между двумя проектами. Кроме того, вы можете создать различные решения и по-прежнему совместно использовать одни и те же элементы с помощью ссылок.

Если у вас есть приложение Windows 8.1

Перенос проекта в приложение, ориентированное на семейство универсальных или классических устройств. Если выбрать семейство универсальных устройств и приложение вызывает API, реализованные только в семействе классических устройств, вы можете защитить эти вызовы адаптивным кодом.

Если у вас есть приложение Windows Phone 8.1

Перенос проекта в приложение, предназначенное для универсального или семейства мобильных устройств. Если выбрать семейство универсальных устройств и приложение вызывает API, реализованные только в семействе мобильных устройств, можно защитить эти вызовы адаптивным кодом.

Адаптация приложения к нескольким форм-факторам

Выбранный вами вариант из предыдущих разделов определяет диапазон устройств, на которые будет работать ваше приложение или приложения, и это может быть очень широким диапазоном устройств. Даже ограничение приложения на семейство мобильных устройств по-прежнему оставляет вас с широким диапазоном размеров экрана для поддержки. Таким образом, если ваше приложение будет работать на форм-факторах, которые ранее не поддерживаются, протестируйте пользовательский интерфейс на этих форм-факторах и внесите необходимые изменения, чтобы пользовательский интерфейс адаптировался соответствующим образом. Вы можете подумать об этом как о задаче после переноса или переносе stretch-goal, и есть некоторые примеры его на практике в примерах в bookstore2 и QuizGame .

Приближение к переносу по слоям

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

  • Представление. Представление (вместе с моделью представления) составляет пользовательский интерфейс приложения. В идеале представление состоит из разметки, привязанной к наблюдаемым свойствам модели представления. Другой шаблон (распространенный и удобный, но только в краткосрочной перспективе) предназначен для императивного кода в файле программной части для непосредственного управления элементами пользовательского интерфейса. В любом случае разметка и дизайн пользовательского интерфейса , а также императивный код, который управляет элементами пользовательского интерфейса, будет простым для порта.
  • Просмотр моделей и моделей данных. Даже если вы официально не принимаете шаблоны разделения проблем (например, MVVM), в приложении неизбежно присутствует код, который выполняет функцию модели представления и модели данных. Код модели представления использует типы в пространствах имен платформы пользовательского интерфейса. В коде модели представления и модели данных также используются невизуальная операционная система и ПЛАТФОРМА .NET FRAMEWORK API (включая API-интерфейсы для доступа к данным). И эти API доступны для приложений UWP, так что большинство, если не весь этот код будет переносить без изменений.
  • Облачные службы. Скорее всего, некоторые из приложений (возможно, это большая часть) выполняются в облаке в виде служб. Часть приложения, запущенного на клиентском устройстве, подключается к этим устройствам. Это часть распределенного приложения, скорее всего, остается неизменной при переносе клиентской части. Если у вас еще нет, хороший вариант облачных служб для вашего приложения UWP мобильные службы Microsoft Azure, который предоставляет мощные внутренние компоненты, которые ваше приложение может вызывать службы, начиная от простых уведомлений для динамических плиток обновления до типа тяжелой масштабируемости фермы серверов может обеспечить.

Прежде или во время переноса рассмотрите возможность улучшения приложения путем рефакторинга, чтобы код с аналогичной целью собирался вместе в слоях и не разбросан произвольно. Факторирование приложения на слои, как описано выше, упрощает работу приложения, чтобы сделать приложение правильным, протестировать его, а затем затем считывать и поддерживать его. Вы можете сделать функциональные возможности более повторно используемыми, следуя шаблону Model-View-ViewModel (MVVM). Этот шаблон сохраняет части данных, бизнеса и пользовательского интерфейса приложения отдельно друг от друга. Даже в пользовательском интерфейсе он может хранить состояние и поведение отдельно от тестируемых визуальных элементов. С помощью MVVM вы можете записывать данные и бизнес-логику один раз и использовать его на всех устройствах независимо от пользовательского интерфейса. Скорее всего, вы сможете повторно использовать большую часть модели просмотра и просматривать части на разных устройствах.

Раздел Описание
Перенос проекта При запуске процесса переноса есть два варианта. Одним из них является изменение копии существующих файлов проекта, включая манифест пакета приложения (для этого параметра см. сведения об обновлении файлов проекта в приложении "Миграция приложений" на универсальная платформа Windows (UWP)). Другим вариантом является создание проекта Windows 10/11 в Visual Studio и копирование файлов в него.
Устранение неполадок Мы настоятельно рекомендуем ознакомиться с этим руководством по переносу, но мы также понимаем, что вы хотите подготовиться к работе и перейти к этапу сборки и запуска проекта. Для этого можно добиться временного прогресса, закомментируя или замечая любой неуклюжный код, а затем возвращаясь к выплате этого долга позже. Таблица устранения неполадок с симптомами и средствами защиты в этом разделе может быть полезной на этом этапе, хотя это не замена для чтения следующих нескольких разделов. Вы всегда можете ссылаться на таблицу по мере выполнения в последующих разделах.
Перенос XAML и пользовательского интерфейса Практика определения пользовательского интерфейса в виде декларативной разметки XAML очень хорошо преобразуется из приложений универсальной версии 8.1 в приложения UWP. Вы найдете, что большая часть разметки совместима, хотя вам может потребоваться внести некоторые корректировки в ключи системных ресурсов или пользовательские шаблоны, которые вы используете.
Перенос для модели ввода-вывода, устройства и приложения Код, который интегрируется с самим устройством и его датчиками, включает входные данные и выходные данные пользователя. Она также может включать обработку данных. Но этот код обычно не считается слоем пользовательского интерфейса или уровнем данных. Этот код включает интеграцию с контроллером вибрации, акселерометром, гироскопом, микрофоном и динамиком (который пересекается с распознаванием речи и синтезом), (гео)расположение и модальность ввода, такие как сенсорный ввод, мышь, клавиатура и перо.
Пример: Bookstore1 В этом разделе представлено пример переноса очень простого приложения универсального 8.1 в приложение Windows 10 и Windows 11 UWP. Универсальное приложение 8.1 — это приложение, которое создает один пакет приложения для Windows 8.1 и другой пакет приложения для Windows Phone 8.1. В Windows 10 и Windows 11 вы можете создать один пакет приложения, который клиенты могут установить на широкий спектр устройств, и это то, что мы будем делать в этом примере. См . руководство по приложениям UWP.
Пример: Bookstore2 В этом примере описывается информация, указанная в элементе управления SemanticZoom . В модели представления каждый экземпляр класса Author представляет группу книг, написанных этим автором, и в СемантикЗоом мы можем просмотреть список книг, сгруппированных по автору, или уменьшить, чтобы просмотреть список авторов.
Пример: QuizGame В этом разделе представлено исследование переноса работающего однорангового теста игры WinRT 8.1 в приложение UWP для Windows 10 и Windows 11.

Документация