Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Поддержка современного .NET для UWP теперь общедоступна и является типом проекта по умолчанию для приложений UWP на C# в Visual Studio 2026. Visual Studio 2026 включает встроенные шаблоны проектов для создания новых приложений UWP, библиотек классов и компонентов среда выполнения Windows с помощью latest .NET.
Замечание
В этой статье описывается .NET Native, устаревшая технология предварительной компиляции приложений UWP. .NET Native будет продолжать получать исправления безопасности и надежности, но не будут получать новые обновления компонентов. Если вы используете .NET Native, это руководство поможет вам понять преимущества миграции на современные .NET с помощью Native AOT.
Почему перейти на современный .NET?
Обновление приложения UWP с .NET Native до latest .NET с помощью Native AOT обеспечивает несколько ключевых преимуществ:
Доступ к современным функциям .NET
- функции Latest .NET и C#: используйте latest .NET со всеми современными функциями языка и API
- Активная разработка: .NET Native будет продолжать получать исправления безопасности и надежности, но не будут получать новые обновления компонентов. Современная .NET активно разрабатывается с регулярными выпусками функций
- Улучшенная совместимость библиотек: ссылки на более современные версии пакетов NuGet, поддерживающих только .NET 6 и выше.
Улучшенный интерфейс разработчика
- Более быстрое время сборки: значительно более быстрая компиляция по сравнению с .NET Native
- Улучшена поддержка отладки: расширенные средства отладки и возможности диагностики для проблем с AOT и обрезкой
- Файлы проекта SDK-style: современные, чистые .csproj файлы без детализированных конфигураций устаревшего стиля
- XAML Горячая перезагрузка: полная поддержка XAML и C# Горячая перезагрузка во время разработки
- Лучшие инструменты: IntelliSense, Live Preview и диагностика XAML работают без проблем
Преимущества производительности
- компиляция Native AOT: аналогичная или улучшенная производительность запуска по сравнению с .NET Native
- Оптимизированная среда выполнения: повышение производительности с помощью межпроцессных оптимизаций
- Статическая проверка: перехват проблем совместимости AOT во время сборки с помощью анализаторов и аннотаций
Добавочный путь миграции к WinUI 3
Вместо того чтобы одновременно переносить среду выполнения .NET и платформу пользовательского интерфейса, теперь можно использовать добавочный подход:
- Во-первых, выполните миграцию на последнюю версию .NET и проверьте совместимость с нативным AOT
- Затем отдельно перенесите из UWP XAML в WinUI 3 и модель приложения Win32.
Этот двухэтапный подход снижает риск и делает миграцию более управляемой.
Необходимые условия
Для разработки приложений UWP с помощью современных .NET вам потребуется:
- Visual Studio 2026
- Нагрузка для инструментов универсальная платформа Windows
- Windows SDK версии 10.0.26100.0 или более поздней
Действия по установке
- Откройте установщик Visual Studio
- В разделе
Workloads выберите Desktop & Mobile , выберите рабочую нагрузкуразработка приложений Windows - В разделе "Необязательный" (в правой области) выберите:
- средства универсальная платформа Windows — содержит все средства для приложений UWP
- пакет SDK Windows 11 (10.0.26100.0) — требуется для сборки приложений XAML UWP
Создание нового проекта UWP с использованием современных возможностей .NET
Visual Studio 2026 включает несколько шаблонов проектов для UWP с последней версией .NET платформы. Шаблоны проектов UWP по умолчанию C# теперь предназначены для современных .NET вместо .NET Native:
- Пустое приложение UWP: стандартное UWP-приложение на XAML с MSIX-пакетом для одного проекта
- Blank UWP CoreApplication App: для сложных сценариев, связанных с Composition/DirectX — без XAML
- компонент UWP среда выполнения Windows: управляемый компонент WinRT, использующий последние версии .NET и CsWinRT
- Библиотека классов UWP: библиотека классов с поддержкой XAML
Подсказка
Устаревшие шаблоны .NET Native (помеченные как ".NET native") по-прежнему доступны для совместимости, но современные шаблоны .NET рекомендуется для всех новых разработок.
Создать новый проект
- В Visual Studio выберите File>New>Project
- Фильтрация по C# и UWP в раскрывающемся списке типа проекта
- Выбор пустого шаблона приложения UWP
- Введите имя проекта и нажмите кнопку "Создать"
- Выбор целевых и минимальных версий Windows
Общие сведения о современных проектах .NET UWP
Современные проекты .NET UWP используют файлы .csproj в стиле SDK с ключевыми свойствами.
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net10.0-windows10.0.26100.0</TargetFramework> <!-- Use the latest supported .NET version -->
<TargetPlatformMinVersion>10.0.19041.0</TargetPlatformMinVersion>
<UseUwp>true</UseUwp>
<EnableMsixTooling>true</EnableMsixTooling>
<PublishAot>true</PublishAot>
<DisableRuntimeMarshalling>true</DisableRuntimeMarshalling>
</PropertyGroup>
</Project>
Основные свойства описаны
- UseUwp: ссылки на проекции WinRT для Windows.UI.Xaml и настройка CsWinRT для совместимости с UWP
-
UseUwpTools: включает средства, относящиеся к UWP, включая компилятор XAML, возможности проекта и упаковку MSIX. Обратите внимание, что это свойство включено по умолчанию при
UseUwpвключении. - EnableMsixTooling: включает поддержку MSIX в одном проекте (без необходимости в отдельном проекте упаковки)
- PublishAot: включение компиляции AOT в машинном коде
- DisableRuntimeMarshalling: оптимизирует производительность для сценариев AOT в машинном коде
Перенос существующих приложений UWP в современные .NET
Чтобы перенести существующее приложение UWP с .NET Native на современный .NET:
Шаг 1. Обновление файла Project
- Преобразование существующего .csproj в формат стиля SDK
- Добавьте необходимые свойства :
UseUwp,EnableMsixToolingзатемPublishAotилиSelfContained - Обновление ссылок на пакет NuGet на версии, совместимые с последними .NET
Шаг 2. Совместимость с нативным AOT
Для Native AOT требуется, чтобы весь код был совместим с AOT. Общие проблемы:
- Использование отражения: добавление соответствующих атрибутов или использование генераторов источников
- Динамическое создание кода: использование альтернатив во время компиляции
- Сторонние библиотеки: убедитесь, что все зависимости поддерживают собственный AOT
Дополнительные сведения о совместимости AOT:
- Исправление предупреждений обрезки
- Известные несовместимости усечения
- Встроенные API, помеченные как RequiresDynamicCode
Проекты кода приложения:
<PropertyGroup>
<PublishAot>true</PublishAot>
</PropertyGroup>
В проектах библиотек можно задать следующее:
<PropertyGroup>
<IsAotCompatible>true</IsAotCompatible>
</PropertyGroup>
Если ваше существующее приложение использует файл директив runtime (rd.xml) для .NET Native, вам потребуется учитывать требования рефлексии и тримминга по-другому с помощью Native AOT, используя атрибуты и анализаторы.
Подсказка
Используйте [GeneratedBindableCustomProperty] на классах, которым требуется {Binding} в XAML. Эти классы должны быть помечены как partial.
Шаг 3. Тщательное тестирование
- Соберите приложение в режиме Release с включенным Native AOT
- Проверка всех функциональных возможностей. Код, скомпилированный AOT, работает одинаково со сборками отладки при правильном аннотации.
- Устраните любые предупреждения об обрезке или AOT перед публикацией
Дополнительные сведения о совместимости нативного AOT см. в разделах Введение в предупреждения AOT и Подготовка библиотек .NET для упрощения.
Собственный AOT и native .NET Native
Хотя оба процесса компилируют ваше приложение в собственный код, Native AOT отличается от .NET Native по важным аспектам:
Статическая проверка
- Собственный AOT: использует статический анализ с анализаторами и аннотациями кода для проверки совместимости AOT на этапе сборки
- .NET Native: использует эвристические и резервные логики, которые могут привести к сбою среды выполнения, сложной для отладки
Производительность и размер
- Производительность запуска: собственный AOT обеспечивает аналогичную или лучшую производительность запуска (~5% улучшения в тестах производительности)
- Двоичный размер: ожидается увеличение до 4 МБ для небольших приложений из-за автономного развертывания (без общего пакета платформы)
- Производительность среды выполнения: повышение производительности внутреннего кода с помощью межпроцессной оптимизации
Опыт разработчика
- Собственный AOT: проблемы, возникающие во время разработки, сопровождаются четкими сообщениями об ошибках и поддержкой отладки
- .NET Native: медленное время сборки, различия между отладкой и выпуском и проблемами среды выполнения с сложной диагностикой
Отражение и метаданные
-
Собственный AOT: использует атрибуты времени компиляции, такие как
[DynamicallyAccessedMembers]и генераторы источников для обработки отражения - .NET Native: использует директивы runtime (rd.xml) files для указания требований к метаданным во время сборки
Дополнительные сведения об ограничениях .NET Native см. в разделе Getting Started with .NET Native и .NET Native and Compilation.
Публикация в Microsoft Store
При публикации приложений UWP с новейшим .NET в магазине Microsoft:
- Сборка в конфигурации выпуска с включенным
PublishAotилиSelfContained. - Убедитесь, что предупреждения AOT или обрезки отсутствуют
- Создание пакета MSIX как обычно
- Отправка в Центр партнеров
Замечание
Вы можете игнорировать ошибки приложение для Windows Набора сертификации (WACK), связанные с "неподдерживаемым API Win32". Центр партнеров больше не осуществляет строгую проверку API Win32 для приложений UWP. Безопасность AppContainer обрабатывает разрешения в процессе выполнения.
Сложные сценарии
Острова UWP XAML
С помощью современных .NET можно разместить элементы управления XAML UWP в приложениях Win32 (WinForms, WPF, WinUI 3). Это позволяет:
- Размещение элементов управления UWP, таких как MapControl, в упакованных приложениях с полным доверием
- Решение с одним проектом, объединяющее компоненты приложения Win32 и UWP
- Отдельный собственный двоичный файл без отдельных цепочк инструментов сборки
Использование последних пакетов NuGet
Современная поддержка .NET позволяет ссылаться на современные пакеты NuGet, требующие .NET 6+, устраняя ограничение .NET Native на .NET Standard 2.0.
Дополнительные ресурсы
- Введение в развертывание родного AOT
- Prepare .NET библиотеки для обрезки
- Создайте "Hello, World!" Приложение UWP
- Windows App SDK и WinUI 3 — рекомендуется для новых приложений Windows
См. также
.NET встроенная документация (устаревшая версия)
- Компиляция приложений с .NET Native — обзор технологии .NET Native
- Начало работы с .NET Native — как использовать .NET Native
- .NET Native и компиляция - Понимание компиляции .NET Native
- Runtime Directives (rd.xml) Configuration File Reference — конфигурация собственных метаданных .NET
Ресурсы миграции
- руководство по миграции Windows App SDK
- Упаковка MSIX