Вопросы и ответы для разработчиков Windows

Эта статья призвана проинформировать о возможностях разработки для Windows и планах развития продукта. Ответы на эти вопросы приведены для Windows App SDK версии 1.0.

Приступая к работе

Что выбрать для создания приложений Windows?

Windows App SDK/WinUI 3 может быть отличным выбором для разработки классических приложений Windows. Такое сочетание технологий — это эволюция UWP и WinUI 2 для классических приложений.

Другие варианты могут быть более подходящими в зависимости от того, что вы создаете и как вы создаете его:

  • Если пакет SDK для приложений Windows или WinUI 3 не соответствует вашим потребностям, может потребоваться UWP или WinUI 2.
  • Если вы ориентируетесь на несколько платформ: React Native и .NET MAUI позволяют создавать кросс-платформенные приложения. .NET MAUI — это отличный выбор для разработчиков на C#. React Native будет знаком разработчикам на JavaScript/TypeScript.
  • Если вы являетесь веб-разработчиком: вы можете использовать WebView2 в качестве узла приложений. Это позволит вам использовать веб-технологии для создания классических приложений, которые могут использовать API Windows SDK и Windows App SDK. Вы также можете использовать React Native для Windows.
  • Если вы являетесь разработчиком C++: Windows App SDK/WinUI 3 — это отличный выбор для классических приложений. Если вы создаете игру, рекомендуем использовать DirectX.
  • Если вы являетесь разработчиком Rust: узнайте больше о Rust для Windows.

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

Где можно найти простое сравнение технологий разработки для Windows?

Windows App SDK/WinUI 3

Что собой представляет пакет SDK для приложений для Windows?

Windows App SDK — эта платформа разработки приложений Windows, которая позволяет создавать красивые, современные классические приложения с обратной совместимостью (вплоть до Windows 10 1809). WinUI 3 — эта платформа пользовательского интерфейса в составе Windows App SDK.

В чем разница между Windows App SDK и Windows SDK?

Оба являются пакетами разработки ПО (SDK) для создания приложений Windows.

Windows App SDK — это новая платформа разработки, которая позволяет создавать современные классические приложения для установки в версиях Windows (вплоть до Windows 10 1809). При использовании пакета SDK для приложений Windows для создания приложения у вас будет доступ к новейшим функциям платформы разработки Windows. Windows App SDK включает WinUI 3.

Windows SDK — это платформа разработки, которая позволяет создавать приложения UWP и Win32, а также классические приложения. Этот пакет использует API Windows, которые привязаны к определенным версиям ОС.

Windows App SDK не заменяет Windows SDK. Windows App SDK дополняет Windows SDK. Он предоставляет удобную и не привязанную к ОС абстракцию для широкого каталога API ОС Windows, к которому вы уже имеете доступ через Windows SDK. При создании приложений с помощью Windows App SDK вам может потребоваться использовать некоторые API Windows SDK в зависимости от требуемой функциональности. Функции Windows SDK будут постепенно переноситься в Windows App SDK.

Можно ли использовать Windows App SDK/WinUI 3 в существующем приложении Windows?

Обратите внимание, что WinUI 3 (платформа пользовательского интерфейса) поставляется с Windows App SDK (платформа разработки для Windows).

Как правило, WinUI 3 не следует использовать, если вы не готовы полностью перенести свою платформу пользовательского интерфейса. Мы работаем над функцией, называемой островами XAML, которые позволяют размещать содержимое WinUI 3 в других платформах пользовательского интерфейса (WPF, Win32).

Вы должны иметь возможность использовать элементы Windows App SDK в любом приложении Win32 или классическом приложении (в зависимости от способа создания существующего приложения). Приложения UWP не поддерживаются Windows App SDK/WinUI 3.

Это означает, что приложения WPF/MFC/WinForms могут использовать API Windows App SDK, которые не связаны с WinUI 3. Примеры таких API: жизненный цикл приложений, работа с окнами и всплывающие уведомления.

Нужно ли использовать Visual Studio для создания приложений WinUI 3?

Мы настоятельно рекомендуем использовать Visual Studio 2022 версии 17.1 и более поздних для разработки приложений Windows App SDK/WinUI 3. Последняя версия Visual Studio предоставит вам доступ к многофункциональным возможностям разработки, таким как горячая перезагрузка.

Вы можете использовать другие среды разработки и рабочие процессы разработки, но в настоящее время Visual Studio является единственной официально поддерживаемой интегрированной средой разработки для Windows App SDK/WinUI 3. Учтите, что для компиляции проектов, использующих XAML или Windows App SDK/WinUI 3, требуется MSBuild.

При создании приложения с помощью Windows App SDK/WinUI 3 я создаю приложение WinUI 3?

Да. "Приложение WinUI 3" — это термин, который рекомендуется использовать.

Можно ли инкрементно обновлять приложение WinUI 2 до WinUI 3, постепенно заменяя компоненты WinUI 2 компонентами WinUI 3?

Нет. Windows App SDK нельзя использовать в приложениях UWP, а WinUI 2 нельзя использовать совместно с WinUI 3. См. сведения о миграции с UWP на Windows App SDK.

Насколько трудно перенести приложение UWP в пакет SDK для приложений Windows или WinUI 3?

Перенос компонентов пользовательского интерфейса обычно прост (для C# и C++/WinRT). В противном случае стоимость миграции из UWP в пакет SDK для приложений Windows / WinUI 3 будет зависеть в первую очередь от следующих факторов:

  1. Настройка файла проекта и MSBuild. Перенос проекта может потребовать значительных усилий в зависимости от того, используются ли расширенные функции MSBuild.
  2. Миграция API .NET. Если приложение UWP использует .NET, необходимо обновить до .NET 6. В большинстве случаев внедрение .NET 6 является прямым.
  3. Библиотеки компонентов пользовательского интерфейса: если вы используете библиотеки компонентов пользовательского интерфейса, вам потребуется новая версия этих библиотек, предназначенных для WinUI 3.
  4. Если исходный код UWP написан в теперь заменяемом C++/CX, некоторые порты исходного кода будут задействованы. См. раздел "Переход на C++/WinRT" из C++/CX.

Дополнительные сведения о миграции UWP см. в разделе "О миграции с UWP" в пакет SDK для приложений Windows.

Если у меня есть приложение UWP в Store, можно ли опубликовать новое упакованное приложение WinUI 3, используя те же идентификаторы?

Да, обновленные приложения можно публиковать без необходимости обновлять удостоверение приложения. Пользователи со старой версией получат обновление до новой версии. Эта рекомендация относится только к классическим приложениям. Приложения Xbox, HoloLens и Surface Hub пока нельзя переносить на WinUI 3.

Как следует упаковывать и распространять приложения WinUI 3?

Где найти рекомендации по миграции на Windows App SDK?

Требуется ли использовать разметку XAML, если я хочу использовать WinUI 3?

Нет. Элементы управления пользовательским интерфейсом можно создать в коде. Но представление пользовательского интерфейса WinUI 3 в формате декларативной разметки XAML предоставляет множество преимуществ, например более удобную разработку.

Если вы выполняете миграцию с UWP на WinUI 3, вы, вероятно, сможете повторно использовать много разметки XAML и код, связанный с пользовательским интерфейсом (но вам придется обновить некоторые синтаксис). Если вы выполняете миграцию из WPF в WinUI 3, вы сможете повторно использовать множество концепций, но набор элементов управления и API будут отличаться.

Имеет ли Visual Studio панель проектирования или конструктор графического пользовательского интерфейса для WinUI 3?

Нет. Мы понимаем, что это недостаток при разработке с WinUI 3. Такие средства, как XAML Hot Reload, помогают во множестве сценариев.

Входит ли WinUI 3 в состав Windows App SDK?

Да. WinUI 3 входит в состав пакета SDK для приложений для Windows.

Входит ли WinUI 2 в состав Windows App SDK?

Нет. WinUI 2 входит в состав платформы UWP.

Основаны ли WinUI 2 и WinUI 3 на одной технологии?

Не совсем. Хотя WinUI 3 основывается на базе кода WinUI 2, они различаются. WinUI 2 и WinUI 3 — это платформы пользовательского интерфейса на основе XAML, которые работают в .NET и C++. Учтите, что WinUI 2 и WinUI 3 несовместимы друг с другом.

Можно ли использовать WinUI 3 без Windows App SDK?

Нет. WinUI 3 входит в состав Windows App SDK.

Можно ли использовать WinUI 3 в распаковке приложения?

Да. Все технологии в Windows App SDK работают в приложениях без упаковки, включая WinUI 3.

В чем разница между XAML Islands и WinUI 3?

XAML Islands позволяет вам размещать современные элементы управления WinUI вместе с существующими пользовательскими интерфейсами Win32 от других платформ, такими как WinForms и WPF. На сегодня XAML Islands поддерживается с большинством системных элементов управления XAML и WinUI 2. Дополнительные сведения см. в этом разделе . Поддержка XAML Islands для элементов управления WinUI 3 в настоящее время находится в разработке.

Если я использую WinUI 3, будет ли мое приложение выглядеть современным в Windows 11 и Windows 10?

Да, пользовательский интерфейс приложения наследует последние принципы проектирования пользовательского интерфейса Fluent для всех поддерживаемых версий Windows 11 и Windows 10 вплоть до версии 1809 в сценариях с упаковкой и без нее.

Можно ли использовать фоны "Слюда" (Windows 11) или "Акрил" (Windows 10) в приложениях, созданных с помощью Windows App SDK?

Пока нет. В настоящее время она находится в разработке.

Где можно найти примеры WinUI 3?

См. примеры приложений для разработки в Windows. Некоторые важные репозитории:

  • WindowsAppSDK-Samples — демонстрирует, как использовать определенные наборы API для Windows App SDK.
  • WinUI 3 Demos — содержит демонстрации, используемые во время презентаций Microsoft WinUI 3.
  • Коллекция элементов управления XAML — демонстрирует возможности WinUI 3 и Windows App SDK. Обратите внимание, что эта ссылка ведет на ветвь winui3 репозитория с коллекцией элементов управления XAML. Обратите внимание, что коллекция элементов управления XAML публикуется в Store.

UWP и WinUI 2

Можно ли распространять приложения UWP за пределами Microsoft Store?

Да. Если MSIX-пакет подписан, подписывающий сертификат должен быть действительным и доверенным на целевом устройстве.

Можно ли совместно использовать элементы управления пользовательским интерфейсом UWP XAML с элементами управления пользовательским интерфейсом Win32, WPF или WinForms?

Да. XAML Islands предоставляет такую возможность. Подробнее о XAML Islands.

Кроссплатформенная разработка

Можно ли начать с WinUI 3 и Windows App SDK, а затем интегрировать .NET MAUI, если мне потребуются кросс-платформенные возможности?

В настоящее время нет. Хотя приложения .NET MAUI используют Windows App SDK/WinUI 3 при выполнении в Windows, мы рекомендуем начать с .NET MAUI или React Native для Windows, если вам может потребоваться ориентация на несколько платформ.

Что следует использовать, если я хочу создавать приложения для Windows и Xbox?

Если для приложения требуется поддержка Xbox, HoloLens или Интернета вещей, мы рекомендуем использовать UWP. Пакет SDK для приложений Windows не поддерживает эти платформы. Для разработки игр мы рекомендуем использовать комплект Microsoft Game Development Kit.

Что следует использовать, если я хочу создавать приложения для Windows и Surface Hub?

Если вы ориентируетесь на Windows и Surface Hub, мы рекомендуем использовать UWP.

Как создавать близкие к нативным прогрессивные веб-приложения (PWA) в Windows?

Упаковка, развертывание и обновления

Какова разница между приложениями, которые упаковываются, распаковываются и упаковываются с внешним расположением?

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

Будет ли мое приложение WinUI 3 автоматически обновляться для конечных пользователей?

Приложение Windows App SDK/WinUI 3 можно предоставлять через Store, appinstaller-файл или в существующем пакете MSI или setup.exe. Store и AppInstaller поддерживают автоматическое обновление для конечных пользователей, у которых включено автоматическое обновление, но приложение MSI/setup.exe должно иметь собственное средство обновления.

Можно ли использовать Windows App SDK без MSBuild?

Как правило, нет. WinUI 3 и пакет SDK для приложений Windows требуют MSBuild, поэтому Visual Studio является необходимым компонентом для разработки с помощью Windows App SDK/WinUI 3. Хотя технически можно создавать приложения пакета SDK для приложений Windows, которые не используют WinUI 3 с помощью других цепочк инструментов, это не поддерживается.

Производительность и оптимизация

Что можно сделать, чтобы пользователям было удобно работать с моим приложением Windows?

Совместимость

Потребуется ли пользователям обновлять Windows для использования моего приложения Windows App SDK/WinUI 3?

Пользователи с Windows 10 версии 1809 и более поздних смогут установить приложения WinUI 3/Windows App SDK без обновления ОС.

Можно ли обеспечить ориентацию на ARM64 для моего приложения WinUI 3?

Да.

Нерекомендуемые компоненты и миграции

Являются ли UWP и WinUI 2 нерекомендуемыми?

Нет. UWP и WinUI 2 пока поддерживаются и будут получать исправления ошибок и обновления для надежности и безопасности. Но большинство новых функций и возможностей, в том числе поддержка последних сред выполнения .NET, будет добавлена только в Windows App SDK/WinUI 3.

Когда следует переносить приложение UWP/WinUI 2 на WinUI 3?

Разработчики UWP могут спокойно перенести приложения на Windows App SDK, если их устраивает функциональность UWP. Для некоторых приложений лучшим выбором может быть вообще не выполнять миграцию. Если вы хотите, чтобы приложения использовали последние возможности платформы Windows и .NET от Майкрософт, их лучше перенести на Windows App SDK. См. статью Миграция из UWP на Windows App SDK.

Когда не следует переносить приложение UWP + WinUI 2 на WinUI 3?

Мы рекомендуем продолжать использовать UWP, если вы создаете приложения для Xbox, Surface Hub или HoloLens.

Является ли WPF нерекомендуемой?

Нет. WPF все так же поддерживается и получает обновления с некоторыми функциями.

Является ли WinForms нерекомендуемой?

Нет. WinForms все так же поддерживается и получает обновления с некоторыми функциями.

Является ли среда выполнения Windows (WinRT) нерекомендуемой?

Нет. WinRT относится к двоичному интерфейсу приложения (ABI), который позволяет взаимодействовать между несколькими языками. WinRT — это эволюция COM. Windows App SDK предоставляет значительную часть своей функциональности через API WinRT.

Заметки о выпуске

Где можно найти заметки о выпуске для Windows App SDK?