> ## 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.

# XBOX Gaming Project Control

> XBOX Gaming Project Control

GDK 会向 Visual Studio shell 中安装一个名为 **XBOX Gaming Project Control** 的工具窗口。该工具窗口提供了一个集中管理所有 XBOX 专属项目设置的位置。除了集中管理 XBOX 项目设置之外，**XBOX Gaming Project Control** 还有助于确保设置正确，从而实现成功的部署与调试会话。各个设置在输入时会进行正确性验证。设置值在不同配置之间存在差异的情况也会被标示出来。识别这些不一致是为了帮助提前发现设置在不同配置中被无意设为不同值的情形。例如，**XBOX Gaming Project Control** 会突出显示部署方式在 *Debug*、*Release* 和 *Profile* 配置之间不同的情况。

使用 XBOX 菜单访问 **XBOX Gaming Project Control**。XBOX 菜单位于 Visual Studio 的 Extensions 菜单下，如下图所示。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_gpc_menu_item.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=6d8cf2a624d24bd70d2e7398a20a2d5b" alt="XBOX Gaming Project Control 菜单项" width="737" height="338" data-path="images/gdk/tools/vs_gpc_menu_item.png" />

概览页面标识当前所选的配置与平台，并提供一组按钮，用于访问以下设置的详细页面。

* 部署
* MicrosoftGameConfig.mgc 分配
* 命令参数
* 模块加载日志
* Break on Suspend Timeout

*Advanced Controls* 下拉列表提供了 *Deploy from OutDir*、*OutDir*、*LayoutDir* 与 *LayoutExtensionFilter* 属性的编辑页面。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_gpc_overview.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=92d215f9d4545e5a986ae80459bcbaa5" alt="XBOX Gaming Project Control" width="1100" height="434" data-path="images/gdk/tools/vs_gpc_overview.png" />

设置按钮上的绿色对勾表示该类别的设置值已通过验证，并且在所有配置中一致。红色感叹号表示某个设置的值存在错误，或者该设置的值在所有配置中不一致。在下图中，*Command Arguments* 的设置有效且一致，但 *Deployment* 设置则不然。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_gpc_inconsistent_settings.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=8c6a583208231e0c62baf23a7a6ed593" alt="XBOX Gaming Project Control 中不一致的设置" width="621" height="119" data-path="images/gdk/tools/vs_gpc_inconsistent_settings.png" />

请注意，一项设置的值随配置而变化并不总是意味着该设置配置有误。例如，为不同配置指定不同的命令行参数是相当常见的。相比之下，为每个配置使用不同的部署方式并不常见，因此可能表明部署设置被无意间不一致地设置了。红色感叹号的出现意味着你可能需要重新审视你的设置，而不是绝对表示设置有误。

使用 **XBOX Gaming Project Control** 对属性所做的更改会立即写入项目文件。不需要 *确定* 或 *应用* 按钮之类的额外操作。所有编辑都完全集成到 Visual Studio 的撤销/重做堆栈中。可以通过 Visual Studio 工具栏或标准的 Ctrl-Z 与 Ctrl-Y 快捷键访问撤销/重做堆栈。下图显示了一个包含通过 **XBOX Gaming Project Control** 编辑的若干属性的撤销堆栈。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_gpc_undo.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=8d2a60e07ac7817f2c11602bb3978bc9" alt="包含 XBOX Gaming Project Control 属性编辑的撤销堆栈" width="874" height="513" data-path="images/gdk/tools/vs_gpc_undo.png" />

可以使用 **XBOX Gaming Project Control** 编辑的属性也可以通过 Visual Studio 的 [C++ 项目属性页](/tools/tools-console/visualstudio/durango-property-pages) 进行编辑。所有属性的值都会在这两个窗口之间保持同步。

## 部署设置

使用 *Deployment* 页面为当前配置与平台指定部署方式以及方式特定的设置。通过选择 *Push*、*RfPC* 或 *External* 按钮之一来选择部署方式。当前所选的部署方式会通过相应部署方式按钮周围的绿色高亮来指示。

会根据所选方式显示特定于该部署方式的设置。在下图中，选择了 *RfPC* 部署方式。可通过编辑框修改启动字符串并输入可选凭据。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_gpc_runfrompc.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=3d9518f78a087ab51390f4c64abf3a09" alt="Run from PC 部署选项" width="903" height="462" data-path="images/gdk/tools/vs_gpc_runfrompc.png" />

如果部署方式在所有配置中不一致，差异的原因会显示在位于部署方式按钮右侧的控件中。在下图中，部署页面当前正在编辑 *Profile* 配置的部署设置，其部署方式设为 *RfPC*。但 *Release* 配置的部署方式设为 *Push*，这一点在部署差异控件中已指出。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_gpc_deploy_diff.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=b274eebce09d4896c0cf1a1aaff4ae91" alt="每个配置采用不同的部署方式" width="923" height="472" data-path="images/gdk/tools/vs_gpc_deploy_diff.png" />

如果需要，可以使用 *Align* 按钮跨配置同步部署设置。在此情况下点击 *Align* 按钮会将 *Release* 配置的部署方式从 *Push* 改为当前配置和平台使用的方式，在本例中为 *RfPC*。

<a id="multiple_game_configs" />

## MicrosoftGameConfig.mgc 设置

Visual Studio 项目系统和 msbuild 文件支持为每个生成配置指定不同的 [MicrosoftGameConfig.mgc](/build/core-features/common/game-config/MicrosoftGameConfig-toc) 文件。生成项目时，MicrosoftGameConfig.mgc 文件在被复制到输出目录时会重命名为 MicrosoftGame.config。

点击 *MicrosoftGame.config assigment* 按钮会打开一个页面，你可在其中为每个生成配置指定要使用的 MicrosoftGameConfig.mgc 文件。也可以指定一个默认的 MicrosoftGameConfig.mgc 文件。除非显式覆盖，否则所有配置都会使用此默认文件。

使用 *Project Default* 下拉列表指定默认的 MicrosoftGameConfig.mgc 文件，如下图所示。请注意，当项目首次使用 Microsoft Game Development Kit (GDK) 的某个模板创建时，会隐式为你设置一个默认的 MicrosoftGameConfig.mgc。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_mgc_default.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=676bd71f9777b42e5842b6f1fefc1713" alt="指定默认的 MicrosoftGame.config 文件" width="1178" height="513" data-path="images/gdk/tools/vs_pgc_mgc_default.png" />

下拉列表值为 *Unselected* 的配置将使用默认的 MicrosoftGameConfig.mgc 文件。从下拉列表中选择一个文件即可覆盖给定配置的默认文件，如下图所示。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_mgc_override.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=28bf2653de7268850689e2df6a8a738b" alt="覆盖默认的 MicrosoftGame.config 文件" width="1172" height="478" data-path="images/gdk/tools/vs_pgc_mgc_override.png" />

## 命令参数

使用 *Command Arguments* 页面为每个生成配置编辑参数。为每个配置提供了单独的编辑框。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_command_args.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=47009d739b861cd27b8950b171a450dd" alt="XBOX Gaming Project Control 中的 Command Arguments" width="588" height="439" data-path="images/gdk/tools/vs_pgc_command_args.png" />

## 模块加载日志

使用 *Logging of Module Loads* 按钮启用包含模块加载信息的详细调试输出。按钮上的滑块用于切换当前生成配置下的该属性。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_log_module_load_button.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=3307ed75ded555f10100f15a0fe82724" alt="XBOX Gaming Project Control 中的 Logging of Module Loads" width="710" height="430" data-path="images/gdk/tools/vs_pgc_log_module_load_button.png" />

点击该按钮可打开一个页面，你可在其中为所有生成配置指定值。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_log_module_load_configs.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=41760b956e049ada9dedccd9bae3063f" alt="为每个生成配置指定 Logging of Module Loads" width="614" height="310" data-path="images/gdk/tools/vs_pgc_log_module_load_configs.png" />

## Break on Suspend Timeout

使用 *Break execution on suspend timeout* 按钮，可在调试器已附加时[重新启用 1 秒挂起超时](/tools/tools-console/visualstudio/debugging-with-visualstudio#vsdebug_gamelifecycle)。

按钮上的滑块用于切换当前生成配置下的该属性。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_log_break_on_suspend_button.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=6737fe2d4b63a29232882813983f3f3c" alt="XBOX Gaming Project Control 中的 Break execution on suspend timeout" width="710" height="430" data-path="images/gdk/tools/vs_pgc_log_break_on_suspend_button.png" />

点击该按钮可打开一个页面，你可在其中为所有生成配置指定值。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_log_break_on_suspend_configs.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=23093fcb915ef7aea5a0f26c227e9e29" alt="为每个生成配置指定 Break execution on suspend timeout" width="612" height="282" data-path="images/gdk/tools/vs_pgc_log_break_on_suspend_configs.png" />

## Advanced Controls

使用 *Advanced controls* 下拉列表访问 *Deploy from Outdir*、*LayoutDir*、*LayoutExtensionFilter* 与 *OutDir* 属性的编辑页面。

<img src="https://mintcdn.com/microsoft-4404708b/NsRUQ49ZRpXgoZ9R/images/gdk/tools/vs_pgc_advanced_controls.png?fit=max&auto=format&n=NsRUQ49ZRpXgoZ9R&q=85&s=279082a2f90349bf14b733db9eb21c18" alt="Advanced controls 下拉列表" width="608" height="414" data-path="images/gdk/tools/vs_pgc_advanced_controls.png" />

为每个配置提供了单独的编辑框或滑块控件，用于编辑属性值。

## 另请参阅

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

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


## Related topics

- [Visual Studio](/zh-CN/tools/tools-console/visualstudio/index.md)
- [面向主机开发的 Visual Studio](/zh-CN/tools/tools-console/visualstudio/visualstudio.md)
- [MicrosoftGame.config 概述](/zh-CN/build/core-features/common/game-config/MicrosoftGameConfig-Overview.md)
- [将 GDK 集成到 4.26 之前的 Unreal Engine 项目](/zh-CN/build/gdk-and-engines/unreal/unreal-legacy.md)
- [使用 GDK 项目模板启动新的 PC 作品](/zh-CN/build/gdk-and-engines/guides/gdk-project-templates.md)
