Windows 运行时(WinRT)是一种非语言的应用程序体系结构,用于生成Windows API 和组件。 语言投影根据特定编程语言的约定公开 WinRT API,因此 C# 或 C++ 代码可以像语言中的其他 API 一样调用它们。
了解投影的工作原理有助于你决定是否在应用中使用 WinRT API,还是创作自己的可重用 WinRT 组件。 本文介绍语言投影如何将 WinRT 元数据映射到 C# 和 C++,Microsoft 支持哪些投影,以及何时需要查阅投影文档。
语言投影的工作原理
Windows元数据 (.winmd) 文件定义 WinRT API。 语言投影根据特定编程语言的约定读取元数据并公开 API。 从标准Windows 应用 SDK或 WinUI 模板创建项目时,该模板已配置语言投影,C# 或 C++ 代码可以直接调用 WinRT API,而无需使用基础元数据或应用程序二进制接口(ABI)。
支持的语言映射
Microsoft支持适用于 Windows 应用 SDK 和 WinUI 应用的 C# 和 C++ 语言投影。 社区项目为其他语言(如 Rust)提供投影,但Microsoft不支持它们。
| Projection | 语言 | 它提供的内容 |
|---|---|---|
| C++/WinRT | C++17 或更高版本 | 用于使用和创作 WinRT API 和组件的标准 C++ 语言投影。 |
| C#/WinRT | C# (.NET) | 用于使用 WinRT API 和创作 WinRT 组件的.NET语言投影。 |
何时使用语言投影文档
对于大多数应用开发,您都可以像使用所选语言的其他 API 一样使用计划的 WinRT API。 在以下情况下使用投影文档:
- 编写供其他应用或编程语言使用的Windows 运行时 组件
- 将库作为封装 WinRT API 的 NuGet 包进行分发
- 在 C++ 代码中使用底层 COM 或 ABI 接口。
- 对与生成的互操作代码或
.winmd文件相关的生成错误进行故障排除。