Перейти к основному содержимому

Разработка приложений для Windows (Microsoft Learn)

Разработчику Архитектору Инженеру

Windows - отдельный стек десктоп-разработки

Раздел Десктопные приложения описывает общую архитектуру окон, событий и стеков (Qt, Electron, Java и др.). Для Windows Microsoft выделяет отдельную платформу разработчика: два уровня SDK, рекомендуемый UI (WinUI 3), классические .NET-стеки и путь от настройки машины до публикации в Microsoft Store.

Официальный вход: Обзор платформы разработчиков Windows. Практический старт проекта: Начните здесь.

См. также: Архитектура десктопных приложений (в том числе что такое драйвер), Особенности разработки десктопных приложений, Платформа .NET — UI.


Два SDK — Windows SDK и Windows App SDK

Windows SDKWindows App SDK
НазначениеЗаголовки, библиотеки и инструменты для прямого доступа к API ОССовременный слой поверх Windows SDK: WinUI, жизненный цикл, окна, уведомления
Привязка к ОСПривязан к версиям WindowsПоставляется через NuGet, обновляется чаще релизов ОС
Когда нуженНизкоуровневые API, DirectX, последние функции ОС, Win32/C++Новые приложения с Fluent UI, интеграция в WPF/WinForms

Документация: Windows SDK, Windows App SDK.

Любое Windows-приложение в итоге опирается на Windows SDK; Windows App SDK — рекомендуемый путь для современного UI и системных возможностей без ожидания обновления всей ОС. Поддерживается Windows 10 (1809) и новее.


Выбор платформы приложения

Microsoft предлагает несколько «дорожек»; выбор зависит от того, новый ли проект, есть ли legacy и нужна ли кроссплатформенность.

WinUI 3 — рекомендуемый UI для новых Windows-приложений

WinUI 3 — нативный UI на базе Windows App SDK и XAML (C# или C++), с оформлением Fluent Design. Если вы впервые пишете под Windows или начинаете проект с нуля — документация WinUI и старт WinUI — основная точка входа.

Особенности по сравнению с другими стеками (сводка Microsoft):

  • современный интерфейс и песочница AppContainer (в отличие от классических Win32/WPF/WinForms без контейнера);
  • нет визуального drag-and-drop дизайнера как у WinForms/WPF — UI чаще в XAML и коде;
  • только Windows (не кроссплатформа; для macOS/Linux смотрите .NET MAUI).

WPF

WPF — зрелая XAML-платформа для классических .NET-приложений: привязка данных, стили, векторная графика, MVVM. Подходит для существующих проектов и сложного desktop UI на Windows. Существующие WPF-приложения можно модернизировать возможностями Windows App SDK (WPF + Windows App SDK).

Windows Forms

Windows Forms — быстрые формы с визуальным конструктором; см. обзор WinForms. Модернизация через WinForms + Windows App SDK.

Win32 (C++)

Прямой доступ к Windows и оборудованию; максимальная производительность, DirectX, низкоуровневые сценарии. Старт: Win32 desktop programming, современные обёртки — C++/WinRT.

UWP (наследие)

Universal Windows Platform — общие API для семейства устройств Windows. Существующие UWP продолжают работать; для WinUI 3 и Windows App SDK Microsoft рекомендует стратегию миграции.

Кроссплатформа

.NET MAUI и React Native перечислены в сравнении платформ как кроссплатформенные варианты с поддержкой Windows среди других ОС.


Сравнение стеков (кратко)

Полная таблица — на странице обзора. Упрощённо для выбора:

ЗадачаКуда смотреть
Новое приложение только для Windows 10/11WinUI 3
Большой legacy на .NET, XAML уже естьWPF + при необходимости Windows App SDK
Быстрый внутренний CRUD, конструктор формWinForms115
Игра, драйвер, максимум производительности C++Win32 + Windows SDK
Один код Windows + macOS + mobile.NET MAUI
Веб-команда, HTML UIElectron114

Среда разработки

Перед первым проектом имеет смысл настроить рабочую станцию по руководству Set up your development environment:

  • Visual Studio 2022 с workload «Разработка классических приложений .NET» и/или «Разработка приложений для Windows» (WinUI, C++);
  • Windows SDK и при необходимости Windows App SDK (часто подтягиваются с проектом);
  • .NET SDK для WinForms, WPF, MAUI;
  • опционально WinGet и конфигурация окружения — см. вкладку winget в Start here.

Подробнее про IDE: Visual Studio — установка и workloads.


Поддержка и жизненный цикл

Версии Windows, SDK и фреймворков имеют политику поддержки. Актуальные сроки и рекомендации — в разделе Support for app development: какие версии Windows целевые, когда прекращается поддержка конкретных пакетов, как планировать обновления приложения.


Драйверы (обзор для прикладного разработчика)

Десктоп-приложение обращается к принтеру, камере, диску через API ОС, а не напрямую к регистрам устройства. Между приложением и железом работают драйверы — см. Что такое драйвер? и вводную в Архитектуре десктопных приложений.

Если вы не пишете драйвер, достаточно знать:

  • запросы идут через стек драйверов (фильтры, function driver, bus driver);
  • сбой драйвера может вызвать нестабильность системы (в отличие от падения одного user-mode процесса);
  • разработка драйверов — отдельная дисциплина: Windows drivers, Getting started with drivers.

Прикладной код (WinUI, WPF, WinForms) остаётся в пользовательском режиме; к драйверам обычно не обращаются, кроме специализированных утилит и SDK производителя оборудования.


Публикация и Microsoft Store

Упаковка MSIX, учётная запись в Partner Center, сертификация и листинг — в отдельной статье Microsoft Store и публикация Windows-приложений. Старт в документации: Начало работы с Microsoft Store.


Карта документации Microsoft Learn

ТемаСсылка
Обзор платформыget-started
Первый проектstart-here
Windows SDKwindows-sdk
WinUI 3winui3
WPFwpf/overview
Среда разработкиdev-environment
Поддержкаdevelop/support
Драйверы — что этоwhat-is-a-driver
Драйверы — разделwindows-hardware/drivers
Публикация в Storepublish/get-started

Частые ошибки

СимптомПричина
WinUI не собираетсяНет Windows App SDK workload в VS
Путаница SDKWindows SDK ≠ Windows App SDK — см. таблицу выше
WPF на ARMПроверьте supported runtime в документации
Store отклонил пакетНе MSIX или неверная подпись — 117

Что попробовать

  1. Шаблон «WinUI 3 Blank App» в Visual Studio — один экран.
  2. Сравните с WinForms на той же машине.
  3. MAUI — если нужен и Android.

Частые ошибки

СимптомПричина
WinUI не собираетсяНет Windows App SDK workload в VS
Путаница SDKWindows SDK ≠ Windows App SDK — см. таблицу выше
WPF на ARMПроверьте supported runtime в документации
Store отклонил пакетНе MSIX или неверная подпись — 117

Что попробовать

  1. Шаблон «WinUI 3 Blank App» в Visual Studio — один экран.
  2. Сравните с WinForms на той же машине.
  3. MAUI — если нужен и Android.

Что читать дальше в энциклопедии

  1. Windows Forms (WinForms) — если выбран быстрый .NET UI с конструктором.
  2. Microsoft Store и публикация — когда приложение готово к распространению.
  3. Особенности разработки десктопных приложений — многопоточность UI, DevOps, тестирование.
  4. Платформа .NET — язык и runtime под WPF/WinForms/MAUI.

См. также

Другие статьи этого же раздела в боковом меню (как на странице «О разделе»).