События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!Этот браузер больше не поддерживается.
Выполните обновление до Microsoft Edge, чтобы воспользоваться новейшими функциями, обновлениями для системы безопасности и технической поддержкой.
Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
При запуске процесса переноса есть два варианта. Одним из них является изменение копии существующих файлов проекта, включая манифест пакета приложения (для этого параметра см. сведения об обновлении файлов проекта в приложении "Миграция приложений" на универсальная платформа Windows (UWP)). Другим вариантом является создание проекта Windows 10 в Visual Studio и копирование файлов в него. Первый раздел в этом разделе описывает второй вариант, но остальная часть раздела содержит дополнительные сведения, применимые к обоим параметрам. Вы также можете сохранить новый проект Windows 10 в том же решении, что и существующие проекты, и предоставить общий доступ к файлам исходного кода с помощью общего проекта. Кроме того, вы можете сохранить новый проект в собственном решении и предоставить общий доступ к файлам исходного кода с помощью функции связанных файлов в Visual Studio.
В этих шагах рассматривается возможность создания проекта Windows 10 в Visual Studio и копирования файлов в него. Некоторые особенности того, сколько проектов вы создаете, и какие файлы копируются, будут зависеть от факторов и решений, описанных в разделе "Если у вас есть универсальное приложение 8.1 и разделы, которые следуют за ним". В этих шагах предполагается самый простой случай.
Вы найдете, что рефакторинг немного и (или) добавление адаптивного кода (как описано ниже), позволит максимально увеличить разметку и код, который работает во всех семействах устройств. Ниже приведены дополнительные сведения.
Большинство api среда выполнения Windows, которые уже вызывают универсальное приложение 8.1, реализованы в наборе API, известном как универсальное семейство устройств. Но некоторые из них реализованы в пакетах SDK для расширений, и Visual Studio распознает только API, реализованные семейством целевых устройств вашего приложения или любыми пакетами SDK для расширений, на которые вы ссылаетесь.
Если вы получаете ошибки компиляции о пространствах имен или типах или членах, которые не удалось найти, это, скорее всего, будет причиной. Откройте раздел API в справочной документации по API и перейдите к разделу "Требования", чтобы узнать, что такое семейство устройств. Если это не ваше семейство целевых устройств, то чтобы сделать API доступным для проекта, вам потребуется ссылка на пакет SDK расширений для этого семейства устройств.
Щелкните Project>Add Reference Windows Universal>Extensions (Добавить эталонные> расширения Windows) и выберите соответствующий пакет SDK расширений. Например, если API,которые вы хотите вызвать, доступны только в семействе мобильных устройств, и они были представлены в версии 10.0.x.y, а затем выберите расширения Windows Mobile для UWP.
Это добавит следующую ссылку на файл проекта:
<ItemGroup>
<SDKReference Include="WindowsMobile, Version=10.0.x.y">
<Name>Windows Mobile Extensions for the UWP</Name>
</SDKReference>
</ItemGroup>
Имя и номер версии соответствуют папкам в установленном расположении пакета SDK. Например, приведенные выше сведения соответствуют этому имени папки:
\Program Files (x86)\Windows Kits\10\Extension SDKs\WindowsMobile\10.0.x.y
Если приложение не предназначено для семейства устройств, реализующих API, необходимо использовать класс ApiInformation для проверки наличия API перед его вызовом (это называется адаптивным кодом). Это условие будет оцениваться везде, где выполняется приложение, но оно будет оцениваться только на устройствах, где присутствует API и поэтому доступен для вызова. Используйте только пакеты SDK расширения и адаптивный код после первой проверки наличия универсального API. Ниже приведены некоторые примеры.
Кроме того, см . манифест пакета приложения.
Если вы используете условную компиляцию (с директивами препроцессора C#), чтобы файлы кода работали как в Windows 8.1, так и в Windows Phone 8.1, теперь можно просмотреть эту условную компиляцию в свете работы конвергенции, выполняемой в Windows 10. Конвергенция означает, что в приложении Windows 10 некоторые условия можно удалить полностью. Другие пользователи изменяются на проверки во время выполнения, как показано в приведенных ниже примерах.
Обратите внимание , что если вы хотите поддерживать Windows 8.1, Windows Phone 8.1 и Windows 10 в одном файле кода, это также можно сделать. При просмотре проекта Windows 10 на страницах свойств проекта вы увидите, что проект определяет WINDOWS_UAP как символ условной компиляции. Таким образом, вы можете использовать это в сочетании с WINDOWS_APP и WINDOWS_PHONE_APP. В этих примерах показан более простой вариант удаления условной компиляции из приложения универсальной версии 8.1 и замены эквивалентного кода для приложения Windows 10.
В первом примере показан шаблон использования API PickSingleFileAsync (который применяется только к Windows 8.1) и API PickSingleFileAndContinue (который применяется только к Windows Phone 8.1).
#if WINDOWS_APP
// Use Windows.Storage.Pickers.FileOpenPicker.PickSingleFileAsync
#else
// Use Windows.Storage.Pickers.FileOpenPicker.PickSingleFileAndContinue
#endif // WINDOWS_APP
Windows 10 конвергентно использует API PickSingleFileAsync , поэтому код упрощает выполнение следующих процедур:
// Use Windows.Storage.Pickers.FileOpenPicker.PickSingleFileAsync
В этом примере мы обрабатываем кнопку назад оборудования, но только на Windows Phone.
#if WINDOWS_PHONE_APP
Windows.Phone.UI.Input.HardwareButtons.BackPressed += this.HardwareButtons_BackPressed;
#endif // WINDOWS_PHONE_APP
...
#if WINDOWS_PHONE_APP
void HardwareButtons_BackPressed(object sender, Windows.Phone.UI.Input.BackPressedEventArgs e)
{
// Handle the event.
}
#endif // WINDOWS_PHONE_APP
В Windows 10 событие кнопки "Назад" является универсальной концепцией. Кнопки назад, реализованные в оборудовании или программном обеспечении, будут вызывать событие BackRequested , поэтому это один для обработки.
Windows.UI.Core.SystemNavigationManager.GetForCurrentView().BackRequested +=
this.ViewModelLocator_BackRequested;
...
private void ViewModelLocator_BackRequested(object sender, Windows.UI.Core.BackRequestedEventArgs e)
{
// Handle the event.
}
Этот окончательный пример аналогичен предыдущему. Здесь мы обрабатываем кнопку аппаратной камеры, но опять же, только в коде, скомпилированном в пакет приложения Windows Phone.
#if WINDOWS_PHONE_APP
Windows.Phone.UI.Input.HardwareButtons.CameraPressed += this.HardwareButtons_CameraPressed;
#endif // WINDOWS_PHONE_APP
...
#if WINDOWS_PHONE_APP
void HardwareButtons_CameraPressed(object sender, Windows.Phone.UI.Input.CameraEventArgs e)
{
// Handle the event.
}
#endif // WINDOWS_PHONE_APP
В Windows 10 кнопка аппаратной камеры — это концепция, определенная для семейства мобильных устройств. Так как один пакет приложения будет работать на всех устройствах, мы изменим условие времени компиляции на условие времени выполнения с помощью адаптивного кода. Для этого мы используем класс ApiInformation для запроса во время выполнения для наличия класса HardwareButtons. HardwareButtons определен в пакете SDK для мобильных расширений, поэтому нам потребуется добавить ссылку на этот пакет SDK в наш проект для компиляции этого кода. Обратите внимание, что обработчик будет выполняться только на устройстве, которое реализует типы, определенные в пакете SDK для мобильных расширений, и это семейство мобильных устройств. Таким образом, этот код морально эквивалентен универсальному коду 8.1 в том, что он тщательно использует только функции, которые присутствуют, хотя это достигается другим способом.
// Note: Cache the value instead of querying it more than once.
bool isHardwareButtonsAPIPresent = Windows.Foundation.Metadata.ApiInformation.IsTypePresent
("Windows.Phone.UI.Input.HardwareButtons");
if (isHardwareButtonsAPIPresent)
{
Windows.Phone.UI.Input.HardwareButtons.CameraPressed +=
this.HardwareButtons_CameraPressed;
}
...
private void HardwareButtons_CameraPressed(object sender, Windows.Phone.UI.Input.CameraEventArgs e)
{
// Handle the event.
}
Кроме того, ознакомьтесь с разделом "Обнаружение платформы, на котором запущено приложение".
Изменения в разделе Windows 10 перечислены изменения в справочнике по схеме манифеста пакета для Windows 10 , включая элементы, которые были добавлены, удалены и изменены. Справочные сведения обо всех элементах, атрибутах и типах в схеме см. в разделе "Иерархия элементов". Если вы переносите приложение Магазина Windows Phone или приложение является обновлением приложения из Магазина Windows Phone, убедитесь, что элемент mp:PhoneIdentity соответствует тому, что находится в манифесте приложения предыдущего приложения (используйте те же идентификаторы GUID, которые были назначены приложению Магазином). Это гарантирует, что пользователи приложения, которые обновляются до Windows 10 или Windows 11, получат новое приложение в качестве обновления, а не дубликата. Дополнительные сведения см. в справочной статье mp:PhoneIdentity .
Параметры проекта (включая ссылки на пакеты SDK расширений) определяют область поверхности API, которую может вызвать ваше приложение. Но манифест пакета приложения — это то, что определяет фактический набор устройств, на которые клиенты могут установить приложение из Магазина. Дополнительные сведения см. в примерах в TargetDeviceFamily.
Манифест пакета приложения можно изменить, чтобы задать различные объявления, возможности и другие параметры, необходимые некоторым функциям. Для его редактирования можно использовать редактор манифеста пакета приложения Visual Studio. Если Обозреватель решений не отображается, выберите его в меню "Вид". Дважды щелкните Package.appxmanifest. Откроется окно редактора манифеста. Выберите соответствующую вкладку, чтобы внести изменения, а затем сохранить.
Следующий раздел — устранение неполадок.
События
Присоединение к вызову ИИ Навыков
8 апр., 15 - 28 мая, 07
Отточите свои навыки ИИ и введите подметки, чтобы выиграть бесплатный экзамен сертификации
Зарегистрируйтесь!