Часто задаваемые вопросы о разработке приложение для Windows

В этой статье приведены ответы на распространенные вопросы о разработке приложений Windows, включая рекомендации по выбору подходящей платформы для проектов. В книге рассматриваются такие темы:

  • Начало работы с разработкой приложений и экосистема Windows.
  • Разработка собственных приложений Windows только с помощью WinUI 3, Windows Presentation Foundation (WPF) и Windows Forms (WinForms).
  • Windows пакет средств разработки программного обеспечения (SDK) и Windows App SDK.
  • Ориентирование на Windows в рамках кроссплатформенной стратегии разработки.
  • Разработка гибридных и веб-приложений с помощью .NET MAUI, Blazor и ASP.NET Core.
  • Как выбрать подход при понимании инвестиций Microsoft.

ландшафт разработки приложений Windows

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

Чтобы получить замечательный обзор современных вариантов для разработчиков Windows, посмотрите последний эпизод Windows Dev Chat, Выбор идеальной платформы для разработки, где они обсуждают WinUI, .NET MAUI, React Native, Blazor и Прогрессивные веб-приложения (PWAs).

Вы также можете обратиться к обзору параметров разработки приложений для разработчиков Windows.

Почему разработка клиентских приложений по-прежнему имеет решающее значение для современной цифровой трансформации в эпоху облачных сервисов?

В эпоху облачных служб разработка клиентских приложений остается важной для обеспечения адаптивных и значимых взаимодействий на устройствах пользователей.

Вот почему клиентские приложения имеют значение:

  • Охват устройств: Клиентские приложения позволяют доставлять ваше приложение напрямую пользователям на выбранных ими устройствах.
  • Шлюз в интеллектуальные службы: клиентские приложения часто являются первым взаимодействием пользователей с вашими службами. Они предлагают широкий интерактивный интерфейс, который позволяет продемонстрировать интеллектуальные функции и отличить продукт от других.
  • Scalability with Cloud Integration: Хорошо интегрированное клиентское приложение может легко синхронизироваться с облачными сервисами, что позволяет доступ к данным в режиме реального времени и простой масштабируемости по мере роста пользовательской базы.
  • улучшенная производительность и лояльность пользователей: продуманное приложение может повысить производительность и поддерживать взаимодействие пользователей с вашим продуктом или службой со временем.

Разработка нативных приложений исключительно для Windows

Что такое Windows App SDK?

Windows App SDK предоставляет компоненты с независимым обслуживанием для классических приложений Windows, включая WinUI, жизненный цикл приложения, управление окнами, уведомления, ресурсы и текстовые API. Поддерживаются приложения, работающие в Windows 10 версии 1809 и более поздних версиях, в соответствии с жизненным циклом поддержки выпуска Windows и версии Windows App SDK.

Чем разница между Windows App SDK и пакетом SDK Windows?

Оба — это комплекты средств разработки программного обеспечения (SDK), которые позволяют создавать Windows приложения.

Windows App SDK предоставляет компоненты, которые независимо от Windows и работают в поддерживаемых Windows выпусках до Windows 10 версии 1809. Он включает WinUI и API для жизненного цикла приложений, окна, уведомлений, ресурсов, текста и других возможностей.

Windows SDK предоставляет заголовки, библиотеки, метаданные и средства для API операционной системы, таких как Win32, WinRT, COM, DirectX, устройства и возможности оболочки.

Windows App SDK не заменяет пакет SDK Windows. Приложения, которые принимают Windows App SDK, могут продолжать использовать API пакета SDK Windows, а приложения WinUI обычно используют оба.

Я создаю новую команду для разработки приложения только для Windows. Почему я должен выбрать разработку с использованием нативной платформы Windows, такой как WinUI, WPF или WinForms?

Ниже приведены некоторые причины выбора собственной платформы Windows для приложения только для Windows:

  • Performance: собственные фреймворки Windows оптимизированы для использования современного оборудования Windows, обеспечивая быстрый и отзывчивый пользовательский опыт.
  • Integration: Windows поставляется с широким спектром API, которые обеспечивают сложные возможности, доступные только в Windows. Собственные платформы обеспечивают глубокую интеграцию с этими функциями и API.
  • Native пользовательский опыт: Нативные фреймворки обеспечивают единообразный опыт на устройствах Windows, гарантируя, что ваше приложение выглядит и работает отлично везде.
  • Автономная поддержка: Собственные платформы поддерживают автономные сценарии, позволяя приложениям функционировать даже без подключения к Интернету.
  • Поддержка и инструменты: Microsoft поддерживает собственные платформы и предоставляет текущие пакеты SDK, документацию, средства отладки и примеры.
Какую платформу следует использовать, чтобы воспользоваться последними инвестициями Microsoft в разработку приложений Windows?

Если вы создаете новое приложение только для Windows, рекомендуется использовать WinUI. WinUI — это последняя собственная платформа пользовательского интерфейса для разработки приложений Windows и предназначена для работы в широком спектре устройств Windows. Она предоставляет современную и гибкую платформу пользовательского интерфейса для создания визуальных и интерактивных Windows приложений. WinUI является частью Windows App SDK и лучше всего работает с последними версиями Windows.

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

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

Пользовательский интерфейс приложения можно перенести в WinUI или использовать Xaml Islands WinUI для размещения Windows App SDK элементов управления в поддерживаемом рабочем узле. Устаревшие системы XAML Islands размещают элементы управления UWP XAML и используют различные API.

Элементы Windows App SDK часто можно использовать в настольных приложениях, в зависимости от того, как было создано существующее приложение. Приложения UWP не поддерживаются Windows App SDK.

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

Дополнительные сведения см. в статье Использование Windows App SDK в существующем проекте.

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

Нет. Сборки WinUI XAML используют MSBuild, но можно создать с помощью пакета SDK .NET и текущих шаблонов WinUI из командной строки в другом редакторе. См. путь для .NET и командной строки.

Visual Studio 2026 предоставляет самые широкие возможности для редактирования, отладки, профилирования и XAML Горячая перезагрузка. Используйте рабочий процесс, соответствующий требованиям к инструментам.

Я получаю ошибку "не удалось загрузить DLL 'Microsoft.ui.xaml.dll'" при запуске приложения. Как это исправить?

Эта ошибка обычно возникает в сценариях unpackaged приложения, в которых среда выполнения Windows App SDK не установлена на компьютере. Попробуйте сделать следующее.

  • Если вы используете приложение packaged (рекомендуемый по умолчанию вариант), убедитесь, что вы запускаете через Visual Studio с выбранным профилем запуска MsixPackage (а не обычным профилем исполняемого файла). Шаг упаковки MSIX устанавливает необходимые компоненты среды выполнения.
  • Если вы запускаете неупакованное приложение, зависящее от платформы, установите соответствующую среду выполнения Windows App SDK. Автономное развертывание включает зависимости Windows App SDK.
  • Убедитесь, что проект соответствует модели развертывания. Для обычного неупакованного приложения .NET установка параметра <WindowsPackageType>None</WindowsPackageType> включает автоматическую инициализацию среды выполнения Windows App SDK. Используйте API начальной загрузки непосредственно, только если требуется явный контроль над динамической инициализацией зависимостей.

Дополнительные сведения о требованиях к развертыванию см. в приложенияхDeploy, использующих Windows App SDK.

Какова разница между WinUI 3 и WinUI 2 для UWP?

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

WinUI для UWP (ранее называемая WinUI 2) — это набор элементов управления и стилей пользовательского интерфейса, созданных на основе UWP. Он обеспечивает современный внешний вид и впечатление для приложений UWP и предназначен для Windows 10.

Когда я создаю приложение с помощью Windows App SDK и WinUI, это приложение WinUI?

Да— "Приложение WinUI" является рекомендуемым термином. Приложения WinUI называются "приложениями WinUI", так как WinUI для UWP не является типом приложения, а набором компонентов, используемых в приложениях UWP.

Можно ли постепенно обновить приложение UWP с помощью WinUI для элементов управления UWP на WinUI, заменив WinUI для компонентов UWP компонентами WinUI?

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

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

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

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

Дополнительные сведения см. в разделе Migrate из UWP в Windows App SDK.

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

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

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

См. статью Общие сведения о развертывании.

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

См. Миграция с UWP на Windows App SDK.

Нужно ли использовать разметку XAML, если требуется использовать WinUI?

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

  • Миграция с UWP на WinUI: многие компоненты XAML и пользовательского интерфейса можно использовать повторно, хотя некоторые корректировки синтаксиса требуются.
  • Переход с WPF на WinUI: многие понятия переносятся, но набор элементов управления и API отличаются.
Есть ли в Visual Studio дизайнерская панель или дизайнер пользовательского интерфейса для WinUI?

В данный момент нет. Используйте XAML Горячая перезагрузка, динамическое визуальное дерево, обозреватель динамических свойств и связанные средства среды выполнения для проверки и обновления XAML во время выполнения приложения.

Полное пошаговое руководство по средствам разработки среды выполнения, доступным для WinUI 3, см. в статье о средствах разработки среды выполнения XAML для WinUI 3.

Включает ли Windows App SDK WinUI?

Да. WinUI поставляется в составе Windows App SDK.

Включает ли Windows App SDK WinUI для UWP?

Нет. WinUI для UWP является частью платформы UWP.

Основаны ли WinUI для UWP и WinUI на той же технологии?

Пока нет. Несмотря на то, что WinUI изначально начался из базы кода WinUI для UWP, они являются различными технологиями. Оба являются платформами пользовательского интерфейса на основе XAML, которые работают между .NET и C++, но WinUI для UWP и WinUI несовместимы друг с другом.

Могу ли я использовать WinUI без использования Windows App SDK?

Нет. WinUI поставляется в составе Windows App SDK.

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

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

Какова разница между островами XAML и WinUI?

WinUI — это платформа пользовательского интерфейса, включенная в Windows App SDK. XAML Islands — это способ размещения, позволяющий существующему классическому приложению размещать содержимое XAML вместе с пользовательским интерфейсом из другой платформы.

Термин может ссылаться на устаревшие системные XAML-острова, в которых размещаются элементы управления XAML UWP, или на островах WinUI XAML, которые размещают Windows App SDK элементы управления в поддерживаемых узлах настольных компьютеров. API, пространства имён и требования к узлу различаются.

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

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

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

Да. См. Применение материалов Mica или Acrylic в настольных приложениях для Windows 11.

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

Смотрите пример и ресурсы. Некоторые важные репозитории:

Если я уже инвестировал значительные средства в WPF, следует ли продолжать использовать WPF или рассмотреть возможность перейти на WinUI?

Если вы уже вложили значительные средства в WPF, вы можете продолжать использовать его для существующих приложений. WPF — это зрелая стабильная платформа, широко используемая для создания Windows классических приложений.

Используйте функцию GitHub Copilot upgrade, чтобы оценить и обновить приложение WPF на .NET Framework до современной версии .NET. Просмотрите созданный план и проверьте каждое изменение в приложении.

Если я создам новое приложение WPF, будет ли оно выглядеть устаревшим по сравнению с другими новыми приложениями Windows?

При разработке приложения WPF с .NET 9 или более поздней версии вы можете убедиться, что ваше приложение соответствует простому, современному виду Windows 11. Новая тема Fluent для WPF представляет современную Windows 11 эстетику с интегрированным светлым и темным режимом и системной поддержкой цвета акцента. Это модернизирует внешний вид вашего приложения и обеспечивает полированный, сплоченный пользовательский интерфейс.

Моя команда комфортно создает приложения WinForms, и это соответствует нашим потребностям. Следует ли рассмотреть возможность миграции в WinUI или другую платформу?

Если WinForms соответствует вашим потребностям и ваша команда комфортно с ним, вы можете продолжать использовать WinForms для существующих приложений. WinForms — это зрелая и стабильная платформа, широко используемая для разработки Windows настольных компьютеров.

Команда WinForms продолжает инвестировать в платформу. К некоторым текущим областям инвестиций относятся:

  • Поддержка асинхронной работы общих элементов управления
  • Темный режим
  • Гибкость макета
  • Функции безопасности настольных систем, такие как доступ к буферу обмена

Разработка нативных кроссплатформенных приложений

Несколько причин создания кроссплатформенных собственных приложений, предназначенных для Windows?

Если вы нацелены на пользователей на нескольких платформах ОС, создание кроссплатформенных приложений с помощью .NET MAUI или React Native может предложить несколько преимуществ:

  • Достигать: Кроссплатформенные приложения достигают большей аудитории на разных устройствах и операционных системах.
  • Повторное использование кода: Повторное потребление кода на разных платформах сокращает время разработки и затраты. Создание отдельных приложений для Windows, Android, iOS и macOS может быть чрезмерно дорогим.
  • Согласованное взаимодействие с пользователем: Кроссплатформенные платформы помогают обеспечить согласованный внешний вид и чувствовать себя на разных платформах.
  • Интеграция: Кроссплатформенные приложения по-прежнему могут интегрироваться с службами, зависящими от платформы, для предоставления комплексного интерфейса.
Кан я уверен, что приложения .NET MAUI будут работать хорошо на Windows?

При создании приложения .NET MAUI для Windows выходные данные — это приложение WinUI. Во время разработки .NET MAUI предлагает единый интерфейс .NET на разных платформах, но он создает код для конкретной платформы под капотом. Это гарантирует, что .NET MAUI приложения хорошо работают на каждой платформе и предоставляют собственный пользовательский интерфейс.

Как .NET MAUI может предоставлять родные API устройств на каждой платформе?

.NET MAUI предоставляет единый интерфейс .NET в Windows, iOS, Android и macOS. Он предлагает кроссплатформенные API для распространенных возможностей, таких как хранилище, сети и датчики устройств. Вы также можете вызывать API для конкретной платформы или предоставлять специализированные реализации для каждой платформы.

Могу ли я начать с WinUI, а затем интегрировать .NET MAUI, если в конечном итоге требуется использовать кроссплатформенные сценарии?

Не в это время. Хотя .NET MAUI использует WinUI при работе в Windows, команды, ожидающие запуск своих приложений на нескольких платформах, должны выбирать .NET MAUI или React Native для работы с настольными приложениями.

Наша команда имеет сильные навыки разработки веб-интерфейсов. Следует ли использовать React Native для настольных компьютеров?

Команды с сильным опытом веб-разработки могут рассмотреть React Native для десктопов. Он включает React Native для Windows и macOS. С помощью подхода "Узнать один раз, писать в любом месте" существующие навыки JavaScript, TypeScript и React можно использовать для создания собственных Windows и приложений macOS.

React Native for Desktop отрисовывает пользовательский интерфейс непосредственно в нативные примитивы, предоставляя нативные возможности производительности и платформенные возможности.

Чтобы начать, см. документацию React Native for Desktop.

Поддерживаются ли другие устройства Windows с использованием React Native для настольных систем?

Приложения React Native можно развертывать на всех устройствах, поддерживаемых Windows 10 и более поздних версий, включая компьютеры, планшеты, 2-in-1s, Xbox и устройства смешанной реальности.

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

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

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

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

Гибридная и веб-разработка

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

Гибридные приложения смешивают лучшее из разработки веб-приложений и собственных приложений. Их ядро создается с помощью веб-технологий, таких как HTML, CSS и JavaScript, и упаковывается в собственный контейнер, который предоставляет access определенным функциям и оборудованию собственной платформы. Они также могут распространяться через магазины приложений.

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

  • Electron для настольных приложений
  • Ionic для мобильных приложений
  • .NET MAUI Blazor Hybrid для кроссплатформенных приложений
Как создать прогрессивные веб-приложения (PWAs) с ощущением родного приложения на Windows?

См. Разработка веб-приложений на Windows и Обзор прогрессивных веб-приложений.

Что такое гибридное приложение .NET MAUI Blazor?

С помощью .NET MAUI приложения Blazor могут работать изначально на Windows, iOS, Android и macOS. Это позволяет создавать гибридные клиентские приложения, которые объединяют Blazor и .NET MAUI компоненты в одном клиентском приложении с полным доступом к возможностям собственной платформы.

Дополнительные сведения см. в ASP.NET Core Blazor Hybrid.

Веб-компоненты гибридного приложения .NET MAUI должны быть созданы с помощью Blazor?

Нет. Начиная с .NET 9, .NET MAUI включает элемент управления HybridWebView, который позволяет размещать другие пользовательские интерфейсы на основе JavaScript в собственном приложении.

Это позволяет размещать приложения Angular, React, Vue или другие приложения HTML/JavaScript в приложении .NET MAUI. Гибридный элемент управления обеспечивает взаимодействие между C# и JavaScript, поэтому код C# может вызывать функции JavaScript и наоборот.

Могут ли другие собственные типы приложений размещать гибридные компоненты Blazor?

Да. WPF и приложения WinForms также могут размещать гибридные компоненты Blazor, что позволяет добавлять современный веб-интерфейс в существующие приложения. Это не поддерживается для приложений WPF или WinForms, созданных на платформе .NET Framework.

Должно ли все приложение быть гибридным приложением или может ли я смешивать и сопоставлять собственные и гибридные компоненты?

Собственные и гибридные компоненты могут быть смешанными в приложении. Например, ядро приложения может быть создано с .NET MAUI компонентами, а гибридные компоненты предоставляют дополнительные функциональные возможности. Это позволяет сочетать производительность и возможности собственных компонентов с гибкостью и экономичностью гибридных компонентов.

Несколько вариантов создания веб-приложений на основе .NET, которые выглядят отлично в современных браузерах на Windows?

Web apps предлагают самый широкий охват любой клиентской платформы приложений. Варианты создания красивых веб-приложений .NET включают:

  • Приложения ASP.NET Core с Razor Pages
  • ASP.NET Core MVC приложения
  • ASP.NET Core приложения Blazor с вариантами модели размещения:
    • Blazor WebAssembly (платформа для создания веб-приложений)
    • Blazor Server

Теперь модели размещения Blazor можно настроить на уровне компонента, включив такие сценарии, как размещение компонента Blazor WebAssembly в приложении Blazor Server.

Дополнительные сведения см. в документации ASP.NET Core.

Выбор подхода и понимание инвестиций Microsoft

Существует так много опций фреймворков для разработки приложений под Windows! Как выбрать?

Windows — это открытая платформа, которая поддерживает множество технологий. Ниже приведены некоторые критерии, которые помогут вам выбрать платформу:

  • Вы разрабатываете в первую очередь для Windows или для нескольких платформ?
  • Какие языки или навыки у вас уже есть — .NET, JavaScript, что-то еще?
  • Требуется ли вам доступ к Windows api?
  • Какие возможности платформы лучше всего соответствуют требованиям вашего приложения?
  • См . эту таблицу для дополнительных факторов сравнения.

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

Как я могу выбрать оптимальный подход к разработке для моего веб-приложения?

При выборе подхода к разработке веб-приложения следует учитывать следующее:

  • Blazor рекомендуется использовать для создания веб-приложений на .NET. Это позволяет создавать интерфейсные и внутренние серверные приложения с помощью .NET, экономии времени и затрат, а также особенно хорошо для корпоративных приложений.
  • JavaScript web apps по-прежнему имеют смысл, если вы хотите использовать существующие навыки JavaScript или необходимо интегрировать с установленными библиотеками или фреймворками JS.
  • Существующие приложения, использующие старые платформы, такие как веб-формы, MVC или Razor Pages, остаются поддерживаемыми и могут продолжать разрабатываться и поддерживаться.
Кто создает приложения с помощью WinUI сегодня?

Многие заказчики сегодня используют WinUI, в том числе Adobe и Apple.

  • Adobe Fresco, бесплатное приложение для рисования и живописи.
  • Приложения Apple Apple Music, Apple TV и Apple Devices были созданы с помощью WinUI и Windows App SDK.

Microsoft также создала множество приложений WinUI, таких как Проводник Windows 11 и приложение "Фотографии".

Кто создает приложения .NET MAUI сегодня?

Многие клиенты, включая Microsoft, создают кроссплатформенные приложения с .NET MAUI. Например, мобильное приложение Microsoft Azure создается с помощью .NET MAUI.

Дополнительные сведения см. в .NET витрине клиентов.

Who создает приложения WPF сегодня?

Большая часть пользовательского интерфейса Microsoft Visual Studio построена с помощью WPF. Сама интегрированная среда разработки Visual Studio является основным примером сложного высокопроизводительного приложения WPF.

Кто создает приложения Blazor сегодня?

Система авиакомпаний FlightPulse от GE Digital использует Blazor для конфигурации серверной части интерфейса, с которым взаимодействуют пилоты, предоставляя пилотам данные датчиков и аналитику напрямую для повышения безопасности и эффективности.

Дополнительные сведения о клиентах Blazor на сайте .NET.

Выбор языка (.NET и C++)

Следует ли использовать C# или C++ для приложения Windows?

В большинстве случаев используйте C# (.NET). C# предлагает более быструю разработку, безопасность памяти, богатые библиотеки и отличные инструменты. Большинство приложений Windows, включая WinUI 3, WPF, WinForms и .NET MAUI приложения, лучше всего создавать с помощью C#.

Используйте C++ при необходимости прямого доступа к оборудованию, минимальной нагрузки во время выполнения или взаимодействия с существующими базами кода C++. Распространенные сценарии C++ включают игровые подсистемы (DirectX), драйверы, служебные программы на уровне системы и критически важные компоненты для производительности.

Фактор C# (.NET) C++
Скорость разработки ✅ Быстрее — управляемая память, богатая экосистема ⚠️ Медленнее — ручное управление ресурсами
Производительность среды выполнения ✅Отлично работает с современным .NET (AOT, Span<T>) ✅ Наилучший вариант — без пауз GC
Безопасность памяти ✅ Сбор мусора ⚠️ Вручную — риск утечки и уязвимостей
доступ к API Windows ✅ С помощью проекции C#/WinRT ✅ С помощью проекции C++/WinRT
Поддержка WinUI 3 ✅ Полная поддержка ✅ Полная поддержка с помощью C++/WinRT
Кросс-платформенность ✅.NET работает в Windows, Linux, macOS ✅ С платформенно-специфичным кодом
лучше всего подходит для Бизнес-приложения, CRUD, службы, приложения с большим количеством пользовательского интерфейса Игры, драйверы, системные средства, низкая задержка

Вы также можете сочетать оба подхода: создать приложение на C# и вызывать критически важный для производительности нативный код через P/Invoke (CsWin32) или компонент C++/WinRT.

Как вызвать API Win32 из C#?

Используйте CsWin32, генератор источника, который создает типобезопасные подписи P/Invoke во время сборки. Вы добавляете пакет NuGet, перечисляете необходимые Microsoft.Windows.CsWin32 API-интерфейсы в NativeMethods.txt файле и вызываете их с помощью созданного PInvoke класса.

CsWin32 заменяет объявления [DllImport], написанные вручную, и работает в любом проекте на C# — WinUI, WPF, WinForms или консольном приложении. Пошаговое руководство см. в статье Вызов API Win32 из приложения Windows на C# (CsWin32).

Что такое C++/WinRT и когда следует использовать его?

C++/WinRT — это стандартная проекция языка C++17 для среда выполнения Windows API. Используйте его при создании приложений Windows в C++, использующих или создающих API WinRT. Он заменяет C++/CX и библиотеку шаблонов C++ среда выполнения Windows C++ (WRL).

Выберите C++/WinRT, когда:

  • Вы создаете приложение WinUI 3 на C++
  • Необходимо создать компоненты среда выполнения Windows, потребляемые другими языками
  • Вы переносите код из C++/CX
Что такое C#/WinRT и когда мне нужно?

C#/WinRT предоставляет поддержку проекции WinRT для C#. В большинстве случаев вы не взаимодействуете с ним напрямую — .NET приложения, предназначенные для Windows автоматически получают доступ к API WinRT через моникеры целевой платформы (TFM). Вам потребуется C#/WinRT, в частности, при разработке компонентов среда выполнения Windows на C# или при создании сборок взаимодействия для сторонних компонентов WinRT.

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

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

Упакованное приложение содержит файлы, сведения об идентичности и сведения о развертывании в таком пакете, как MSIX. Непакетированное приложение использует установщик или процесс развертывания вне системы пакетов Windows и по умолчанию не имеет идентификатора пакета. Приложение, упакованное во внешнем расположении, использует небольшой пакет идентификации, сохраняя двоичные файлы, расположенные вне пакета, а также существующую программу установки и процесс обновления.

См. Обзор упаковки с требованиями и компромиссами.

Требуется ли идентификатор пакета?

Он зависит от Windows функций, которые использует ваше приложение. Для некоторых сценариев фонового выполнения задач, push-уведомлений, расширений оболочки, ассоциаций и ИИ в Windows требуется идентификатор пакета. Другие возможности Windows App SDK, включая уведомления WinUI и локального приложения, могут работать без него.

См. функции пакета, требующие удостоверения. Если вам нужен идентификатор, но необходимо сохранить имеющийся установщик, рассмотрите вариант упаковки с внешним расположением.

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

Приложение, зависяющее от платформы, использует пакеты среды выполнения Windows App SDK, установленные отдельно на устройстве. Это сокращает размер развертывания приложения. Автономное приложение содержит содержимое пакета Windows App SDK Framework с приложением, что увеличивает размер развертывания, но позволяет службе приложений использовать эти компоненты платформы.

API, зависящие от дополнительных пакетов MSIX, таких как пакет Singleton, могут требовать отдельных проверок развертывания или среды выполнения даже в автономном приложении. Упаковка и развертывание среды выполнения являются отдельными решениями. См. статью с общими сведениями о развертывании пакета SDK для приложений для Windows.

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

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

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

Для проектов WinUI XAML требуется MSBuild, но Visual Studio не требуется. Вы можете использовать пакет SDK для .NET и шаблоны WinUI для запуска MSBuild через dotnet build из командной строки. Компоненты Windows App SDK, не использующие WinUI, также можно интегрировать в поддерживаемые настольные проекты на основе MSBuild.

Искусственный интеллект Windows

Как мне выбрать между API ИИ в Windows, Foundry Local и Windows ML?

Используйте api Windows ИИ для готовых к использованию возможностей Windows управляемого ИИ. Используйте Foundry Local для обнаружения, скачивания и запуска поддерживаемых языковых и речевых моделей локально. Используйте Windows ML для запуска пользовательских моделей ONNX, используя поставщики выполнения для доступного оборудования ЦП, GPU и NPU.

Требования к оборудованию, версии Windows, идентификатору пакета, модели и распространению различаются. Проверьте актуальные требования для выбранных вами API или среды выполнения, вместо того чтобы предполагать, что все возможности ИИ в Windows доступны на любом ПК.

Что следует учитывать перед доставкой функции с поддержкой ИИ?

Определите предполагаемое использование и ограничения функции, оцените качество и безопасность с репрезентативными данными, раскройте поведение ИИ, где это необходимо, защитите пользовательские данные и предоставьте резервный вариант, когда модель или требуемое оборудование недоступно. См. Ответственная разработка генеративного ИИ на Windows.

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

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

Ознакомьтесь с разработкой приложений для Windows - лучшие практики и обзором производительности приложений Windows и основных понятий.

Compatibility

Будут ли пользователи обновлять Windows для использования приложения WinUI?

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

Можно ли использовать Arm64 с приложением WinUI?

Да. Создайте собственное приложение Arm64 для повышения производительности и эффективности. Для большой базы кода C++ с зависимостями x64, Arm64EC позволяет постепенно переносить модули. Windows 11 в Arm также может запускать множество существующих приложений x86 и x64 с помощью эмуляции Prism, но следует протестировать производительность и совместимость на репрезентативных устройствах Arm.

Устаревания и миграции

Не рекомендуется ли использовать UWP / WinUI для UWP?

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

Поддержка UWP для современного .NET на базе Native AOT стала общедоступной и используется в качестве типа проекта C# UWP по умолчанию в Visual Studio 2026. Перемещение существующего приложения UWP из .NET Native в современные .NET является отдельным шагом модернизации от переноса пользовательского интерфейса в WinUI. См. статью "Модернизация приложения UWP с помощью .NET и собственного AOT".

Когда следует перенести приложение UWP или WinUI для UWP в WinUI?

Разработчики UWP не должны чувствовать давление на миграцию, если они удовлетворены UWP и его набором функций — для многих приложений правильный выбор может быть оставаться на UWP.

Приложения, которые хотят воспользоваться последней платформой Windows и .NET инвестиций, должны рассмотреть вопрос о переходе к Windows App SDK. См. Миграция с UWP на Windows App SDK.

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

Продолжайте использовать UWP, если вы создаете для Xbox, Surface Hub или HoloLens.

Является ли WPF устаревшим?

Нет. WPF поддерживается, рекомендуется и продолжает получать обновления компонентов. См. схему WPF на GitHub.

Не рекомендуется ли WinForms?

Нет. WinForms поддерживается и продолжает получать обновления компонентов. См. дорожную карту Windows Forms на GitHub.

Устарел ли среда выполнения Windows (WinRT)?

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

Примечания к релизу

Где можно найти заметки о релизе для Windows App SDK?

Последние заметки о выпуске можно найти на странице что нового.