> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Visual Studio 2022 GDK 支持说明

> Visual Studio 2022 Microsoft Game Development Kit (GDK) 支持说明

本文介绍 GDK 对 Visual Studio 2022 的支持情况。Visual Studio 2022 [17.12 或 17.14 版本](https://learn.microsoft.com/visualstudio/releases/2022/servicing-vs2022)支持 Microsoft Game Development Kit (GDK) 开发。根据 [Visual Studio 产品生命周期与服务](https://learn.microsoft.com/visualstudio/productinfo/vs-servicing)，17.12 和 17.14 版本提供长期支持通道。

<Note>Visual Studio 2022 的 17.0 至 17.11 版本自 2026 年 1 月起已停止支持。</Note>

## 安装 Visual Studio 2022

GDK 支持使用 Visual Studio 2022 的 **Professional** 版或 **Enterprise** 版进行开发。不支持 Community 版。

<Info>基于 ARM 的设备不支持 GDK 的 Visual Studio 扩展 (VSIX) 组件。若要使用 GDK 的 Visual Studio 项目模板、属性页和调试扩展，请在基于 x64 的开发 PC 上安装 GDK。</Info>

安装 Visual Studio 2022 时，请在安装过程中选择 **使用 C++ 的游戏开发** 工作负载，如下面的截图所示。

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs2022_workloads_game_development.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=323e575e103c803e945a7b6eee4e0d3d" alt="在 Visual Studio 2022 中安装“使用 C++ 的游戏开发”工作负载" width="1157" height="514" data-path="images/gdk/tools/vs2022_workloads_game_development.png" />

除了游戏开发所需的核心 C++ 工具之外，请确保安装 **Windows 10 SDK (22000)** 组件，以提供使用 GDK 构建游戏所需的 Windows SDK。你也可以使用 *Windows SDK for Windows 11, Version 22H2 (10.0.22621)* 或 *Windows SDK for Windows 11, Version 24H2 (10.0.26100)*，但它们并非必需。

虽然并非必需，但安装 **使用 C++ 的桌面开发** 工作负载可以提供更多有用的工具和示例。例如，如果你使用 Clang/LLVM 工具集进行构建，则需要 **使用 C++ 的桌面开发**。

## 安装可选工具集

**使用 C++ 的游戏开发** 工作负载会安装 Visual Studio 2022 版本的 MSVC 生成工具（版本 **v143**）。除 **v143** 工具集外，GDK 还支持使用以下工具集进行构建：

* v142（Visual Studio 2019 工具集）
* 面向 Windows 的 C++ Clang 工具

这种灵活性使你能够在不更新工具集的情况下升级到 Visual Studio 2022 IDE。

你可以在 **使用 C++ 的桌面开发** 工作负载下找到可选工具集，或者在 Visual Studio 安装对话框中搜索 **单个组件** 找到它们。

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs2022_optional_toolsets.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=dabf5dc04ac037d980dc20784cf60caa" alt="在安装 Visual Studio 2022 时选择可选工具集" width="1160" height="518" data-path="images/gdk/tools/vs2022_optional_toolsets.png" />

## 为项目选择工具集

通过项目属性页中的 **平台工具集** 属性来指定要用于项目的工具集。

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs2022_specify_a_toolset.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=1ea3eed598eb3d7937b59384b6f5a563" alt="指定生成项目时要使用的工具集" width="788" height="539" data-path="images/gdk/tools/vs2022_specify_a_toolset.png" />

也可以在项目文件中手动指定 **PlatformToolset** 属性，如以下属性组所示。

```xml theme={null}
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Gaming.Xbox.Scarlett.x64'" Label="Configuration">
  <ConfigurationType>Application</ConfigurationType>
  <PlatformToolset>v143</PlatformToolset>
  <UseDebugLibraries>true</UseDebugLibraries>
  <CharacterSet>Unicode</CharacterSet>
  <EmbedManifest>false</EmbedManifest>
  <GenerateManifest>false</GenerateManifest>
</PropertyGroup>
```

## 使用 Visual Studio 2022 调试 XBOX 项目

要使用 Visual Studio 2022 进行调试，请使用 2022 年 3 月（或更新版本）的 GDK 生成要调试的游戏。这是因为这些版本 GDK 中随附的 Game OS 包含使用 Visual Studio 2022 进行调试所需的二进制文件。如果你尝试使用 Visual Studio 2022 针对更旧的 Game OS 进行调试，将会看到以下错误消息。

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs_2022_old_gamos_debug_error.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=1c2d4c8fd1be70615c84d85d0ce2f216" alt="尝试使用 Visual Studio 2022 调试器针对早于 2022 年 3 月 GDK 中的 Game OS 版本进行调试" width="418" height="191" data-path="images/gdk/tools/vs_2022_old_gamos_debug_error.png" />

当你在 Visual Studio 2022 中使用 **调试** 菜单下的 **附加** 对话框时，在 **连接类型** 下拉列表中选择 **XBOX Direct Connection**，并在 **连接目标** 文本框中输入主机的 Host IP 地址。使用 [xbconnect](/tools/tools-console/commandlinetools/xbconnect) 命令行工具确定 Host IP。

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs2022_attach_dialog.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=71f8447875f069e11920e2d3a8ae12c5" alt="使用 Visual Studio 2022 附加对话框" width="860" height="611" data-path="images/gdk/tools/vs2022_attach_dialog.png" />

<Note>这些值与使用 Visual Studio 2019 附加时输入的值不同。使用 Visual Studio 2019 时，连接类型是 **Remote no authentication**，IP 地址是主机的 System IP 地址。</Note>

## Visual Studio 2022 服务模型

Visual Studio 2022 引入了新的服务模型，你可以选择一个服务基线，然后只获取该基线的更新。这一新模型取代了之前 Visual Studio 版本中强烈鼓励使用最新可用版本的服务模型。有关更多详细信息，请参阅 [Visual Studio 产品生命周期与服务](https://learn.microsoft.com/lifecycle/products/visual-studio-2022)。

## 报告 Bug

对于 **Visual C++ 编译器** 的 Bug 报告，请尽量通过 Visual Studio 的 *报告问题...* 提交。有关更多信息，请参阅 [Microsoft Docs](https://learn.microsoft.com/visualstudio/ide/how-to-report-a-problem-with-visual-studio) 以及[开发者社区](https://aka.ms/feedback/report?space=62) 网站。请务必阅读[此页面](https://aka.ms/compilerbug)，了解如何为编译器创建高质量的 Bug 报告。

<Note>如果重现问题需要私密信息，你可以在标记为 “Microsoft only” 的公开报告问题中添加评论。</Note>

对于 **clang/LLVM for Windows 编译器** 的 Bug 报告，请使用 [https://bugs.llvm.org/](https://bugs.llvm.org/)

对于 **Microsoft Standard C++ Library**（也称为 STL）的 Bug 报告，请使用 [https://github.com/microsoft/STL/issues](https://github.com/microsoft/STL/issues)

一如既往，如遇需要升级处理的紧急问题，可随时联系你的 *Microsoft 联系人*。

## 已知问题

* Game OS 不支持 C++20 P0355R7 \<chrono> *Calendars And Time Zones* 中新增的 `std:chrono` 时区功能，因为它未在 XVD 映像中包含 `icu.dll`、`icuin.dll`、`icuuc.dll` 或相关数据文件。如果你使用这些函数，应用将在运行时抛出 C++ 异常。PR0355R7 中的日历功能受支持。

## 另请参阅

[Visual Studio](/tools/tools-console/visualstudio/visualstudio)

[面向 XBOX 开发的 Visual Studio 项目模板](/tools/tools-console/visualstudio/durango-visual-studio-templates)

[面向 XBOX 开发的 Visual Studio 属性](/tools/tools-console/visualstudio/durango-property-pages)

[使用 Visual Studio 调试 XBOX 项目](/tools/tools-console/visualstudio/debugging-with-visualstudio)
