Использование современных функций Windows в настольных приложениях

Вам не нужно переписать WPF, Windows Forms или приложение Win32, чтобы воспользоваться современными функциями Windows. Windows App SDK и более широкие Windows платформы предлагают модульные возможности, которые можно применять постепенно, в собственном темпе.

Замечание

В этой статье описывается добавление современных Windows функций в существующее классическое приложение. Если вы хотите модернизировать цепочку инструментов .NET или компилятор C++, ознакомьтесь с GitHub Copilot модернизацией .NET или руководством по переносу и обновлению Microsoft C++.

Переносите свой UI-фреймворк?

Если ваша цель — полностью модернизировать слой пользовательского интерфейса приложения, рекомендуется перейти на WinUI 3 — собственную платформу пользовательского интерфейса для классических приложений Windows. Чтобы приступить к работе, см. статью "Создание первого приложения WinUI 3 ".

Если вы хотите добавить Windows функции в существующую платформу приложений (WPF, WinForms или C++ Win32), не изменив уровень пользовательского интерфейса, продолжайте чтение.

Выбор подхода

Три подхода к модернизации являются независимыми. Вы можете использовать один, два или все три в одном приложении.

Approach Что это дает вам Требуется упаковка?
API WinRT Прямой доступ к API-интерфейсам платформы Windows (уведомлениям, Bluetooth, совместному доступу к контракту, датчикам и т. д.) из любого классического приложения .NET или C++ Нет, для большинства API
Пакет SDK для приложений Windows Пакет NuGet, который предоставляет современные функции разработки Windows (окна, отрисовка текста, ресурсы и многое другое) для существующих приложений Нет, для большинства функций
Упаковка MSIX Современный установщик с чистой деинсталляцией, автоматическими обновлениями и идентификацией пакета; может быть добавлен без изменения исходного кода приложения N/A — упаковка — это подход

Подсказка

Начните с API WinRT, если вы хотите вызвать определенный API платформы Windows. Добавьте Windows App SDK, если вам нужны его возможности (DWriteCore, MRT Core, оконный интерфейс). Добавьте пакетирование MSIX, если вам нужен идентификатор пакета или вы хотите модернизировать установщик.

интерфейсы программирования приложений WinRT

API среда выполнения Windows (WinRT) предоставляют Windows функции платформы, такие как уведомления приложений, контракт общего доступа, Bluetooth и многое другое. Эти API можно вызывать непосредственно из приложений WPF, Windows Forms и C++ Win32.

Пакет SDK для приложений Windows

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

Упаковка MSIX и идентификация пакета

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

Отправные точки для конкретных фреймворков

Ваша платформа Рекомендуемая начальная точка
WPF Использование пакета SDK для приложений Windows в существующем проекте
WinForms Использование пакета SDK для приложений Windows в существующем проекте
C++ Win32 Использование пакета SDK для приложений Windows в существующем проекте
C++ (WinRT) Интерфейсы API WinRT для настольных приложений

Каталог компонентов

В следующей таблице перечислены распространённые функции модернизации, а также указано, требуется ли для них Windows App SDK или идентификатор пакета.

AI

Функция требуется Windows App SDK? Требуется идентификатор пакета?
Windows Фабрика ИИ Нет Да

Пользовательский интерфейс и текст

Функция требуется Windows App SDK? Требуется идентификатор пакета?
Компоненты WinUI 3 в классическом приложении Да Нет
Отрисовка текста с помощью DWriteCore Да Нет
Применение Mica или Acrylic в приложениях Win32 Нет Нет
Применение округлых углов Нет Нет
Применение тем Windows Нет Нет

Жизненный цикл приложения

Функция требуется Windows App SDK? Требуется идентификатор пакета?
Фоновые задачи (Windows App SDK) Да Да
Задачи запуска Нет Да

Интеграция Windows

Функция требуется Windows App SDK? Требуется идентификатор пакета?
Интеграция листов общего доступа Нет Нет
API пользователей между устройствами Нет Нет
Сопоставления файлов Нет Да
Мини-приложения Windows Нет Да

Security

Функция требуется Windows App SDK? Требуется идентификатор пакета?
Хранилище учетных данных Нет Нет
OAuth 2.0 Нет Нет
Биометрия отпечатков пальцев Нет Нет
Смарт-карты Нет Нет
Криптография Нет Нет

Resources

Функция требуется Windows App SDK? Требуется идентификатор пакета?
Управление ресурсами MRT Core Да Нет

Полный список функций, доступных в классических приложениях, см. в разделе "Функции" для разработки приложений Windows.

Дальнейшие действия