Windows 应用开发常见问题解答

本常见问题解答提供了有关Windows应用程序开发的常见问题的解答,包括有关为项目选择合适的框架的指导。 涵盖的主题包括:

  • 入门指南和 Windows 应用开发环境。
  • 使用 WinUI 3、Windows Presentation Foundation (WPF) 和 Windows 窗体 (WinForms) 进行仅限 Windows 的本机应用程序开发。
  • Windows软件开发工具包(SDK)和Windows 应用 SDK。
  • 将 Windows 作为跨平台开发战略的一部分。
  • 使用 .NET MAUI、Blazor 和 ASP.NET Core 进行混合和 Web 应用开发。
  • 如何在了解微软投资的同时选择一个策略。

Windows应用开发环境

在哪里可以找到Windows开发技术的简单概述?

有关当今Windows开发人员选项的出色回顾,请观看最新的 Windows 开发聊天集,选择理想的开发平台,讨论 WinUI、.NET MAUI、React Native、Blazor 和渐进式Web 应用(PWA)。

您还可以参考供 Windows 开发人员使用的应用开发选项概述。

为什么在云服务时代的现代数字化转型中,客户端应用开发仍然至关重要?

在云服务时代,客户端应用开发对于在用户设备上提供响应式、有意义的交互仍然很重要。

下面是客户端应用很重要的原因:

  • 设备访问范围: 使用客户端应用,可以将应用程序直接带到所选设备上的用户。
  • 智能服务的门户: 客户端应用通常是用户与服务的第一次交互。 它们提供丰富的交互式界面,使你能够展示智能功能并将产品与其他产品区分开来。
  • 云集成的可扩展性:一个良好集成的客户端应用可以毫不费力地与后端云服务同步,从而在用户群增长时实现实时数据访问和无缝扩展性。
  • 提高工作效率和用户忠诚: 经过深思熟虑的应用可以提高工作效率,并使用户随着时间的推移与产品或服务保持参与。

原生Windows仅限应用开发

什么是 Windows 应用 SDK?

Windows 应用 SDK为Windows桌面应用(包括 WinUI、应用生命周期、窗口化、通知、资源和文本 API)提供独立服务组件。 它支持在 Windows 10 版本 1809 及更高版本上运行的应用,具体取决于Windows版本和Windows 应用 SDK版本的支持生命周期。

Windows 应用 SDK与Windows SDK之间的区别是什么?

两者都是软件开发工具包(SDK),可用于生成Windows应用。

Windows 应用 SDK提供独立于 Windows 发布的组件,并可在受支持的各个 Windows 版本上运行,最低支持到 Windows 10 版本 1809。 它包括用于应用生命周期、窗口化、通知、资源、文本和其他功能的 WinUI 和 API。

Windows SDK 为操作系统 API(如 Win32、WinRT、COM、DirectX、设备和 shell 功能)提供标头、库、元数据和工具。

Windows 应用 SDK不会替换Windows SDK。 采用Windows 应用 SDK的应用可以继续使用Windows SDK API,而 WinUI 应用通常同时使用这两种 API。

我正在构建一个新团队来开发仅限Windows的应用。为什么应选择使用 WinUI、WPF 或 WinForms 等本机Windows框架进行开发?

选择本地Windows框架作为仅限于Windows的应用的原因如下:

  • 性能:本机 Windows 框架经过优化,可以利用新式 Windows 硬件,提供快速的响应式的用户体验。
  • Integration: Windows附带各种 API,这些 API 仅支持Windows上提供的复杂体验。 本机框架提供与这些功能和 API 的深度集成。
  • 原生用户体验:原生框架在 Windows 设备上提供一致的体验,确保您的应用无论在何处运行都具有出色的外观和性能。
  • 脱机支持: 本机框架支持脱机方案,即使没有 Internet 连接,应用也能正常运行。
  • 支持和工具:Microsoft维护本机框架,并提供当前的 SDK、文档、调试工具和示例。
我应该使用哪种框架来利用Microsoft在Windows应用开发方面的最新投资?

如果要构建仅限Windows的新应用,建议使用 WinUI。 WinUI 是用于Windows应用开发的最新本机 UI 框架,旨在跨各种Windows设备工作。 它提供了一个现代灵活的 UI 框架,用于创建视觉吸引力和交互式Windows应用。 WinUI 是Windows 应用 SDK的一部分,适用于最新版本的 Windows。

Can 我在现有Windows应用中使用 Windows 应用 SDK/WinUI?

请注意,WinUI(UI 框架)附带Windows 应用 SDK(Windows平台开发框架)。

可以将应用的 UI 迁移到 WinUI,或使用 WinUI XAML 岛在受支持的现有桌面主机上托管Windows 应用 SDK控件。 旧系统 XAML 岛托管 UWP XAML 控件并使用不同的 API。

Windows 应用 SDK的元素通常可用于桌面应用,具体取决于现有应用的生成方式。 Windows 应用 SDK不支持 UWP 应用。

这意味着WPF/MFC/WinForms应用可以使用与 WinUI 无关的Windows 应用 SDK API。 示例包括应用生命周期、窗口化和 Toast 通知。

有关详细信息,请参阅 使用现有项目中的Windows 应用 SDK

我是否需要使用 Visual Studio 生成 WinUI 应用?

否。 WinUI XAML 生成使用 MSBuild,但可以从另一个编辑器中的命令行使用 .NET SDK 和当前 WinUI 模板进行生成。 请参阅 命令行快速入门

Visual Studio 2026 提供最丰富的集成编辑、调试、分析和 XAML 热重载体验。 使用与您的工具要求相匹配的工作流。

我在运行应用时收到“无法加载 DLL'Microsoft.ui.xaml.dll'”错误。如何修复?

此错误通常发生在未打包应用方案中,其中尚未在计算机上安装 Windows 应用 SDK 运行时。 请尝试以下做法:

  • 如果运行的是 packaged 应用(建议的默认),请确保通过 Visual Studio 启动,其中选择了 MsixPackage启动配置文件(而不是纯可执行配置文件)。 MSIX 打包步骤安装所需的运行时组件。
  • 如果运行的是依赖于框架的未打包应用,请安装匹配Windows 应用 SDK运行时。 独立部署包括其Windows 应用 SDK依赖项。
  • 确认项目与部署模型匹配。 对于正常.NET未打包的应用,设置<WindowsPackageType>None</WindowsPackageType>启用Windows 应用 SDK运行时自动初始化。 仅当需要显式控制动态依赖项初始化时,才直接使用引导程序 API。

有关部署要求的详细信息,请参阅使用 Windows 应用程序 SDK 部署应用

适用于 UWP 的 WinUI 3 和 WinUI 2 有何区别?

WinUI(以前称为 WinUI 3)是用于Windows应用开发的最新本机 UI 框架。 它提供了一个现代灵活的 UI 框架,用于创建视觉吸引力和交互式Windows应用。 WinUI 是Windows 应用 SDK的一部分,适用于最新版本的 Windows。

WinUI for UWP (以前称为 WinUI 2)是一组基于 UWP 构建的 UI 控件和样式。 它为 UWP 应用提供新式外观,专为Windows 10而设计。

当我使用 Windows 应用 SDK 和 WinUI 生成应用时,是否正在生成“WinUI 应用”?

是 — “WinUI 应用”是建议的术语。 WinUI 应用称为“WinUI 应用”,因为 WinUI for UWP 不是应用类型,而是 UWP 应用中使用的一组组件。

我可以通过逐步使用 WinUI 组件替换 WinUI for UWP 组件来增量更新我包含 WinUI for UWP 控件的 UWP 应用以迁移至 WinUI 吗?

否。 Windows 应用 SDK不能在 UWP 应用中使用,而 UWP 的 WinUI 不能与 WinUI 混合。 请参阅从 UWP 迁移到 Windows 应用 SDK

将 UWP 应用迁移到 WinUI 有多困难?

迁移 UI 组件通常很简单(对于 C# 和 C++/WinRT)。 否则,迁移成本主要取决于:

  1. Project 文件和 MSBuild 自定义:迁移工作因高级 MSBuild 使用情况而异。
  2. .NET API 迁移:使用 .NET Native 的 UWP 应用可借助 Native AOT 迁移到当前仍受支持的 .NET 版本。 这种现代化独立于将 UI 迁移到 WinUI。
  3. UI 组件库: 库必须具有面向 WinUI 的版本。
  4. 如果 UWP 应用是用现在取代的 C++/CX 编写的,则需要一些源代码移植。 请参阅从 C++/CX 移动到 C++/WinRT

有关详细信息,请参阅 从 UWP 到 Windows 应用 SDK

如果我在应用商店中有现有的 UWP 应用,是否可以使用相同的标识符发布新的打包的 WinUI 应用?

是的,可以在不更新应用程序标识的情况下发布升级的应用。 旧版本的用户将更新为新版本。 这仅适用于桌面应用。 Xbox、HoloLens和Surface中心应用无法迁移到 WinUI。

我如何打包和分发我的 WinUI 应用?

请参阅部署概述

在哪里可以找到Windows 应用 SDK迁移指南?

请参阅从 UWP 迁移到 Windows 应用 SDK

如果想要使用 WinUI,是否需要使用 XAML 标记?

否。 可以在代码中创建 UI 控件。 但是,在声明性 XAML 标记中表示 UI 提供了许多好处,包括改进的开发人员体验。

  • 从 UWP 迁移到 WinUI:可以重复使用许多 XAML 和 UI 组件,但需要一些语法调整。
  • 从WPF迁移到 WinUI:许多概念都延续了,但控件集和 API 有所不同。
Visual Studio 是否具有 WinUI 的设计界面/UI 设计器?

目前不能。 使用 XAML 热重载、实时可视化树、实时属性资源管理器和相关运行时工具在应用运行时检查和更新 XAML。

有关适用于 WinUI 3 的运行时设计工具的完整演练,请参阅 WinUI 3 的 XAML 运行时设计工具

Windows 应用 SDK 包括 WinUI 吗?

是的。 WinUI 作为Windows 应用 SDK的一部分提供。

Windows 应用 SDK 是否包括适用于 UWP 的 WinUI?

否。 WinUI for UWP 是 UWP 平台的一部分。

WinUI for UWP 和 WinUI 是否基于同一技术构建?

并不全面。 虽然 WinUI 最初从 WinUI for UWP 代码库开始,但它们是不同的技术。 这两个框架都是基于 XAML 的 UI 框架,可跨 .NET 和 C++ 工作,但适用于 UWP 和 WinUI 的 WinUI 彼此不兼容。

我可以在不使用 Windows 应用 SDK 的情况下使用 WinUI 吗?

否。 WinUI 作为Windows 应用 SDK的一部分提供。

是否可以在未打包的应用中使用 WinUI?

是的。 WinUI 和许多Windows 应用 SDK API 在未打包的应用中工作。 但是,某些Windows功能需要包标识,依赖框架的未打包应用必须初始化Windows 应用 SDK运行时。 比较 打包概述需要包标识的功能中的选项。

XAML 岛和 WinUI 之间的区别是什么?

WinUI 是Windows 应用 SDK中包含的 UI 框架。 XAML 岛是一种托管技术,它允许现有桌面应用将 XAML 内容与另一个框架中的 UI 一起放置。

该术语可以指托管 UWP XAML 控件的旧系统 XAML 岛,或托管受支持桌面主机中Windows 应用 SDK控件的 WinUI XAML 岛。 API、命名空间和主机要求有所不同。

如果我创建 WinUI 应用程序,它在 Windows 11 和 Windows 10 上是否看起来现代化?

是的。 在打包和未打包的方案中,您的应用程序的 UI 将在所有受支持版本的 Windows 11 和 Windows 10 上继承最新的 Fluent UI 设计原则,直至 1809 版本。

我可以在使用 Windows 应用 SDK 生成的应用中使用 Mica 或 Acrylic 背景吗?

是的。 请参阅 在 Windows 11 桌面应用中应用 Mica 或 Acrylic 材料

在哪里可以找到 WinUI 示例?

请参阅示例和资源。 一些值得注意的存储库:

如果我已在WPF投入了大量资金,我应继续使用WPF或考虑迁移到 WinUI?

如果你已经投入了大量资金用于WPF,则可以继续将其用于现有应用。 WPF是一个成熟的稳定框架,通常用于生成Windows桌面应用。

使用 GitHub Copilot 升级功能评估并将 .NET Framework WPF 应用升级到现代 .NET。 查看生成的计划并验证应用中的每个更改。

如果我构建一个新的WPF应用,它会不会显得比其他新的Windows应用程序过时?

使用 .NET 9 或更高版本开发 WPF 应用程序时,可以确保你的应用与Windows 11的时尚现代外观相匹配。 WPF的新 Fluent 主题引入了当代Windows 11美学,集成了浅色/深色模式和系统主题色支持。 这可使应用的外观现代化,并提供美观、凝聚力良好的用户体验。

我的团队可以舒适地构建 WinForms 应用,它符合我们的需求。是否应考虑迁移到 WinUI 或其他框架?

如果 WinForms 满足你的需求,并且团队对它感到满意,则可以继续使用 WinForms 进行现有应用。 WinForms 是一个成熟的稳定框架,通常用于Windows桌面开发。

WinForms 团队继续投资该平台。 一些当前投资领域包括:

  • 对常见控件的异步支持
  • 深色模式
  • 布局灵活性
  • 桌面安全功能如剪贴板访问

跨平台原生开发

构建面向 Windows 的跨平台本地应用有何原因?

如果你面向多个 OS 平台的用户,请使用 .NET MAUI 或 React Native 构建跨平台应用可提供以下几个优势:

  • 市场宣传:跨平台应用可跨不同设备和操作系统触达更多的受众。
  • 代码重用: 跨平台重用代码可缩短开发时间和成本。 为 Windows、Android、iOS 和 macOS 构建单独的应用可能极其昂贵。
  • 一致的用户体验: 跨平台框架有助于跨平台提供一致的外观。
  • 集成: 跨平台应用仍可与特定于平台的服务集成,以提供全面的体验。
.NET MAUI 应用能否在 Windows 上良好地运行?

当您为 Windows 构建 .NET MAUI 应用程序 时,输出的是 WinUI 应用程序。 在开发过程中,.NET MAUI跨平台提供单个.NET体验,但它在后台生成特定于平台的代码。 这可确保 .NET MAUI 应用在每个平台上都表现良好,并提供本机用户体验。

.NET MAUI如何跨每个平台提供本机设备 API?

.NET MAUI提供跨 Windows、iOS、Android 和 macOS 的统一.NET体验。 它为存储、网络和设备传感器等常见功能提供跨平台 API。 还可以调用特定于平台的 API 或为每个平台提供专用实现。

我可以从 WinUI 开始吗?如果以后想要支持跨平台场景,是否可以稍后集成 .NET MAUI?

目前不是。 尽管.NET MAUI在 Windows 上运行时使用 WinUI,但希望面向多个平台的团队应从 .NET MAUI 或 React Native for Desktop 开始。

我们的团队具有强大的 Web 前端开发技能。是否应考虑使用 React Native for Desktop?

具有强大 Web 开发体验的团队可能需要考虑 React Native for Desktop。 它包括 React Native for WindowsmacOS。 借助“学习一次,随处编写”方法,现有 JavaScript、TypeScript 和 React 技能可用于开发原生 Windows 和 macOS 应用。

适用于桌面的 React Native 将 UI 直接呈现到本机基元,提供本机性能和平台功能。

请参阅 React Native for Desktop 文档以开始使用。

React Native for Desktop 支持其他任何 Windows 设备吗?

React Native 应用可以部署到Windows 10及更高版本支持的所有设备,包括电脑、平板电脑、2-in-1、Xbox 和混合现实设备。

如果我想开发适用于 Windows 和 Xbox 的应用程序,我应该使用什么?

如果你的应用需要支持 Xbox、HoloLens 或 IoT,建议使用 UWP。 Windows 应用 SDK不支持这些平台。 对于游戏开发,请使用 Microsoft 游戏开发工具包

如果我想要构建可以在 Windows 和 Surface Hub 上运行的应用,我应该使用什么?

如果要同时面向 Windows 和 Surface 中心,建议使用 UWP。

混合和 Web 开发

什么是混合应用,为什么应考虑生成混合应用?

混合应用混合了 Web 和本机应用开发的最佳方案。 其核心是使用 HTML、CSS 和 JavaScript 等 Web 技术构建的,并封装在本机容器中,该容器允许访问某些本机平台功能和硬件。 还可以通过应用商店分发它们。

主要优势是,混合应用允许你构建可在多个本机平台和 Web 上运行的单个应用,从而减少开发时间和成本。 混合应用开发平台的示例包括:

  • 适用于桌面应用的 Electron
  • 适用于移动应用的 Ionic
  • 适用于跨平台应用的 .NET MAUI Blazor 混合
如何在 Windows 上构建具备本机体验的渐进式 Web 应用 (PWA)?

请参阅 Windows 上的 Web 开发渐进式 Web 应用 的概述。

什么是.NET MAUI Blazor 混合应用?

使用 .NET MAUI,Blazor 应用可以在 Windows、iOS、Android 和 macOS 上本机运行。 这样,就可以创建混合客户端应用,将 Blazor 和.NET MAUI组件合并到单个本机客户端应用中,并完全访问本机平台功能。

了解更多信息,请访问 ASP.NET Core Blazor Hybrid

.NET MAUI 混合应用程序的 Web 组件需要用 Blazor 创建吗?

否。 从 .NET 9 开始,.NET MAUI包括一个 HybridWebView 控件,该控件允许在本机应用中托管其他基于 JavaScript 的 UI。

这样,便可以在.NET MAUI应用中托管 Angular、React、Vue 或其他 HTML/JavaScript 应用。 混合控件在 C# 和 JavaScript 之间提供互作,因此 C# 代码可以调用 JavaScript 函数,反之亦然。

任何其他本机应用类型是否可以托管 Blazor 混合组件?

是的。 WPF和 WinForms 应用还可以托管 Blazor 混合组件,从而将新式 Web UI 添加到现有应用。 WPF或基于 .NET Framework 构建的 WinForms 应用不支持此功能。

我的整个应用是否需要混合应用,或者是否可以混合和匹配本机组件和混合组件?

本机组件和混合组件可以在应用中混合。 例如,可以使用.NET MAUI组件构建应用的核心,而混合组件提供其他功能。 这允许将本机组件的性能和功能与混合组件的灵活性和成本效益相结合。

在 Windows 的现代浏览器中,有哪些构建外观出众的.NET Web 应用的选项?

Web 应用程序拥有任何客户端应用程序平台中最广泛的覆盖范围。 创建美观.NET Web 应用的选项包括:

  • 带有Razor Pages的ASP.NET Core应用程序
  • ASP.NET Core MVC 应用
  • ASP.NET Core Blazor 应用程序,提供多种托管模型选项:
    • Blazor WebAssembly
    • Blazor Server

现在可以在组件级别配置 Blazor 托管模型,从而在 Blazor 服务器应用中托管 Blazor WebAssembly 组件等方案。

有关详细信息,请参阅 ASP.NET Core 文档

选择一种方案并了解微软的投资

生成面向Windows的应用的框架选项太多!如何确定

Windows是一个支持许多技术的开放平台。 下面是一些可帮助你选择平台的条件:

  • 你在构建的项目是优先支持Windows还是跨平台?
  • 你已有哪些语言或技能 — .NET、JavaScript,还有什么内容?
  • 是否需要访问特定于Windows的 API?
  • 哪种框架的功能最符合应用的要求?
  • 有关其他比较因素,请参阅 此表

对于许多业务应用,团队通常根据现有技能以及团队最舒适的使用方式进行选择。

我如何选择我的 Web 应用的最佳开发方法?

为 Web 应用选择开发方法时,请考虑以下事项:

  • 建议使用 Blazor 生成具有.NET的前端 Web 应用。 它允许你使用.NET生成前端和后端,从而节省时间和成本,这尤其适用于企业应用。
  • 如果要利用现有的 JavaScript 技能或需要与已建立的 JS 库或框架集成,JavaScript web apps仍然有意义。
  • 使用旧框架(如 Web 窗体、MVC 或 Razor Pages)的现有应用仍受支持,可以继续开发和维护。
谁正在使用 WinUI 生成应用?

许多客户今天都在使用 WinUI 进行构建,包括 Adobe 和 Apple:

Microsoft还生成了许多 WinUI 应用,例如Windows 11文件资源管理器和照片应用。

如今谁在构建.NET MAUI应用?

许多客户(包括Microsoft)都使用.NET MAUI构建跨平台应用。 例如,Microsoft Azure移动应用是使用.NET MAUI生成的。

有关详细信息,请参阅 .NET 客户展示

谁正在构建 WPF 应用程序?

大多数Microsoft Visual Studio UI 都是使用WPF生成的。 Visual Studio IDE 本身是复杂高性能WPF应用的主要示例。

谁正在构建 Blazor 应用?

GE Digital 的 FlightPulse 航空公司系统使用 Blazor 进行飞行员看到的后端配置,直接将传感器数据和分析引入飞行员,以提高安全性和效率。

在 .NET 网站上查看更多 Blazor 客户案例

语言选择 (.NET vs C++)

我应该对Windows应用使用 C# 或 C++ 吗?

在大多数情况下,请使用 C# (.NET)。 C# 提供更快的开发、内存安全、丰富的库和出色的工具。 大多数Windows应用(包括 WinUI 3、WPF、WinForms 和 .NET MAUI 应用)最好是使用 C# 构建的。

如果需要直接访问硬件、最少的运行时开销或与现有 C++ 代码库的互操作,请使用 C++。 常见的 C++ 方案包括游戏引擎(DirectX)、驱动程序、系统级实用工具和性能关键组件。

因子 C# (.NET) C++
开发速度 ✅ 更快 — 托管内存、丰富的生态系统 ⚠️ 速度较慢 — 手动资源管理
运行时性能 ✅ 对现代 .NET 提供出色支持(AOT、Span<T>) ✅ 最佳情况 — 无 GC 暂停
内存安全 ✅ 垃圾回收 ⚠️ 手动 — 泄漏和漏洞风险
Windows API 访问 ✅ 通过 C#/WinRT 投影 ✅ 通过 C++/WinRT 投影
WinUI 3 支持 ✅ 完全支持 ✅ 通过 C++/WinRT 提供完全支持
跨平台 ✅.NET在 Windows、Linux、macOS 上运行 ✅ 采用平台特定代码
最适用于 业务应用、CRUD、服务、UI 密集型应用 游戏, 驱动程序, 系统工具, 低延迟

还可以混合使用:在 C# 中生成应用,并通过 P/Invoke(CsWin32) 或 C++/WinRT 组件调用性能关键型本机代码。

如何从 C# 调用 Win32 API?

使用 CsWin32,一个源生成器,用于在生成时创建类型安全的 P/Invoke 签名。 添加 Microsoft.Windows.CsWin32 NuGet 包,列出文件中所需的 NativeMethods.txt API,并通过生成的 PInvoke 类调用它们。

CsWin32 替换手写[DllImport]声明,并适用于任何 C# 项目 (WinUI、WPF、WinForms 或控制台)。 有关分步演练,请参阅从 C# Windows应用(CsWin32)调用 Win32 API

什么是 C++/WinRT,何时应使用它?

C++/WinRT 是Windows 运行时 API 的标准 C++17 语言投影。 在 C++ 中生成使用或创作 WinRT API 的Windows应用时使用它。 它将替换 C++/CX 和 Windows 运行时 C++ 模板库(WRL)。

在以下情况下选择 C++/WinRT:

  • 正在生成 C++ WinUI 3 应用
  • 你需要编写供其他语言使用的 Windows 运行时 组件
  • 你正在从 C++/CX 移植
什么是 C#/WinRT,何时需要?

C#/WinRT 为 C# 提供 WinRT 投影支持。 在大多数情况下,你不会直接与它交互 — .NET面向Windows的应用通过目标框架名字对象(TTFM)自动访问 WinRT API。 在 C# 中创作Windows 运行时组件或为第三方 WinRT 组件生成互操作程序集时,需要显式使用 C#/WinRT。

打包、部署和更新

打包、解压缩和打包到外部位置的应用之间有何区别?

打包的应用在包(如 MSIX)中包含其文件、标识和部署信息。 未打包的应用使用Windows包系统外部的安装程序或部署过程,默认情况下没有包标识。 采用外部位置打包的应用使用一个小型标识包,同时保留位于外部的二进制文件及其现有的安装程序和更新流程。

有关要求和权衡,请参阅 打包概述

是否需要包标识?

这取决于应用使用的Windows功能。 某些后台执行、推送通知、shell 扩展、关联和Windows AI 方案需要包标识。 其他Windows 应用 SDK功能(包括 WinUI 和本地应用通知)可以在不使用的情况下工作。

请参阅需要包标识的功能。 如果需要标识,但必须保留现有安装程序,请考虑采用外部位置打包

依赖于框架的部署与独立部署有何区别?

依赖框架的应用使用Windows 应用 SDK设备上单独安装的运行时包。 这会减少应用的部署大小。 自包含应用会随应用一起包含 Windows 应用 SDK Framework 程序包的内容,这会增加部署包大小,但也使应用能够为这些框架组件提供维护。

依赖于其他 MSIX 包(例如 Singleton 包)的 API 可能需要单独的部署或运行时支持检查,即使在独立应用中也是如此。 打包和运行时部署是单独的决策。 请参阅 Windows 应用 SDK 部署概述

我的 WinUI 应用是否会自动更新以供最终用户使用?

WinUI 应用可以通过应用商店、.appinstaller 文件或现有 MSI 或 setup.exe 包传递。 应用商店和 AppInstaller 为启用了自动更新的最终用户支持自动更新,但 MSI/setup.exe 应用必须提供自己的更新机制。

我能否在不使用 MSBuild 的情况下使用 Windows 应用 SDK?

WinUI XAML 项目需要 MSBuild,但不需要Visual Studio。 可以使用 .NET SDK 和 WinUI 模板,通过 dotnet build 从命令行运行 MSBuild。 Windows 应用 SDK不使用 WinUI 的组件也可以集成到受支持的基于 MSBuild 的桌面项目中。

Windows 人工智能

如何在 Windows AI API、Foundry Local 和 Windows ML 之间进行选择?

使用 Windows AI APIs 获取开箱即用、由 Windows 管理的 AI 功能。 使用 Foundry Local 在本地发现、下载和运行支持的语言和语音模型。 使用 Windows ML 运行具有可用 CPU、GPU 和 NPU 硬件的执行提供程序的自定义 ONNX 模型。

硬件、Windows版本、包标识、模型和分发要求各不相同。 检查所选 API 或运行时的当前要求,而不是假设每个电脑上都有每个Windows AI 功能。

在交付 AI 辅助功能之前,应考虑什么?

定义该功能的预期用途和限制、使用代表性数据评估质量和安全、在适当情况下披露 AI 行为、保护用户数据,并在模型或所需硬件不可用时提供回退。 请参阅在 Windows 上负责任地开发生成式 AI

性能和优化

如何使我的Windows应用对最终用户感觉很好?

请参阅 Windows 应用程序开发 - 最佳做法Windows 应用性能和基础知识概述

Compatibility

我的用户是否必须更新Windows才能使用我的 WinUI 应用?

Windows 应用 SDK应用可以在Windows 10版本 1809 及更高版本支持的版本中运行,但单个 API 和应用功能可能需要较新的Windows版本或硬件。 对于生产支持,设备必须运行仍在支持的Windows版本和版本,并且应用应将受支持的Windows 应用 SDK版本与当前服务更新一起使用。 请参阅Windows 应用 SDK支持发布频道

是否可以使用 WinUI 应用面向 Arm64?

是的。 构建本机 Arm64 应用,以获得最佳性能和效率。 对于具有 x64 依赖项的大型 C++ 代码库, Arm64EC 允许以增量方式迁移模块。 arm 上的Windows 11还可以通过 Prism 仿真运行许多现有的 x86 和 x64 应用,但你应该在具有代表性的 Arm 设备上测试性能和兼容性。

弃用和迁移

是否弃用了 UWP/WinUI for UWP?

否。 UWP 和适用于 UWP 的 WinUI 仍受支持,并会获得错误修复以及可靠性和安全性修复。 但是,WinUI 和 Windows 应用 SDK是新的常规用途Windows桌面应用的建议路径,并接收大多数新的平台投资。

面向新式 .NET 的 UWP Native AOT 支持现已正式可用,并且在 Visual Studio 2026 中是默认的 C# UWP 项目类型。 将现有 UWP 应用从 .NET Native 迁移到现代 .NET,是独立于将其 UI 迁移到 WinUI 之外的另一项现代化步骤。 请参阅使用 .NET 和本机 AOT 实现 UWP 应用的现代化

何时应将 UWP/WinUI for UWP 应用迁移到 WinUI?

如果 UWP 开发人员对 UWP 及其功能集感到满意,则不应感到迁移压力 — 对于许多应用,正确的选择可能是留在 UWP 上。

想要从最新的Windows平台和.NET投资中受益的应用应考虑迁移到Windows 应用 SDK。 请参阅从 UWP 迁移到 Windows 应用 SDK

何时不应该将 UWP + WinUI for UWP 应用程序迁移到 WinUI?

如果您正在为 Xbox、Surface Hub 或 HoloLens 开发应用,请继续使用 UWP。

WPF已弃用?

否。 WPF受支持、建议并继续接收功能更新。 请参阅 GitHub 上的 WPF 路线图。

WinForms 是否弃用?

否。 WinForms 受支持并继续接收功能更新。 请参阅 GitHub 上的 Windows 窗体 路线图。

是否弃用了 Windows 运行时 (WinRT)?

否。 WinRT 是一个应用程序二进制接口(ABI),可跨多种语言进行互作。 WinRT 是 COM 的演变,Windows 应用 SDK通过 WinRT API 提供其大部分功能。

发行说明

在哪里可以找到 Windows 应用 SDK 的发行说明?

可在 “新增 功能”页面上找到最新的发行说明。