Windows 应用 SDK平台概述

Windows 应用 SDK支持两种语言进行应用开发:C#C++ 。 每种语言都使用语言投影来调用Windows 运行时(WinRT)API,同时使用 XAML(特别是命名空间中的 Microsoft.UI.Xaml WinUI 3 XAML)来定义用户界面。 这些投影和 UI 框架共同构成了平台层。

Note

C# 和 C++ 是唯一支持Windows 应用 SDK和 WinUI 3 投影的语言。 社区项目适用于其他语言(如 Rust),但不受官方支持。

你需要知道这一点吗?

如果你使用 Windows 应用 SDK 或 WinUI 3 的标准 Visual Studio 模板创建项目,系统已为你配置好语言投影。 C# 或 C++ 代码可以直接调用 WinRT API,无需考虑投影的工作原理。

在以下情况下,通常需要更深入地了解投影层:

  • 编写供其他应用或编程语言使用的Windows 运行时 组件
  • 将库作为封装 WinRT API 的 NuGet 包进行分发
  • 使用 C++ 代码中的低级别 COM 或 ABI 接口进行互操作
  • 排查与生成的互操作代码或 WinMD 文件相关的构建错误

对于日常的应用开发,下面的内容属于背景知识——如果你想进一步了解,这些信息会很有帮助,但并非入门所必需。

语言预测

Windows 运行时 API 使用 Windows Metadata (.winmd) 文件以非特定语言的方式定义。 语言投影会读取元数据并生成惯用绑定,以便从 C++ 或 C# 自然调用 API。

Projection 语言 它是什么 命名空间模式
C++/WinRT C++17 一个仅标头库,提供对 WinRT API 的一流访问权限。 它将替换 C++/CX 和 Windows 运行时 C++ 模板库(WRL)。 winrt::Microsoft::UI::Xaml
C#/WinRT C# (.NET) 一个以 NuGet 包形式提供的工具包,用于从 .winmd 文件生成 .NET 互操作程序集。 它使你可以从 C# 使用和创作 WinRT 组件。 Microsoft.UI.Xaml

UI 框架

Framework 它是什么 命名空间
XAML (WinUI 3) WinUI 3 用户界面的基于 XML 的声明性标记语言。 处理布局、样式设置、数据绑定和动画。 后台代码是用 C# 或 C++ 编写的。 Microsoft.UI.Xaml (不是 Windows.UI.Xaml,这是 UWP)

Important

WinUI 3 XAML 使用 Microsoft.UI.Xaml 命名空间。 如果看到代码或文档引用 Windows.UI.Xaml,即 UWP XAML,这是一个不同的框架。 请勿在 WinUI 3 项目中混合这两个命名空间。

后续步骤

选择与要学习的内容匹配的区域: