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

The GDK installs a tool window into the Visual Studio shell called the **XBOX Gaming Project Control**.  This tool window provides a central location in which to manage all XBOX-specific project settings.  In addition to centralizing the management of XBOX project settings, the **XBOX Gaming Project Control** also helps ensure the settings are correct and will result in a successful deployment and debugging session.  Individual settings are validated for correctness as they are entered.  Instances in which the value of a setting is different across configurations are also called out.  Identifying these mismatches is intended to help find cases up front in which settings were inadvertently set to different values in different configurations.  For example, the **XBOX Gaming Project Control** will highlight cases in which the deployment method is different between your *Debug*, *Release*, and *Profile* configurations.

Use the XBOX menu to access the **XBOX Gaming Project Control**.  The XBOX menu can be found under the Visual Studio Extensions menu as shown in the following figure.

<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 menu item" width="737" height="338" data-path="images/gdk/tools/vs_gpc_menu_item.png" />

The overview page identifies the currently selected configuration and platform, and provides a set of buttons used to access details pages used to configure the following settings.

* Deployment
* MicrosoftGameConfig.mgc assignment
* Command Arguments
* Logging of Module Loads
* Break on Suspend Timeout

An *Advanced Controls* dropdown provides access to the editing pages for the *Deploy from OutDir*, *OutDir*, *LayoutDir* and *LayoutExtensionFilter* properties.

<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" />

A green check mark on a settings button indicates that the values of the settings for that category have been validated and are the same across all configurations.  A red exclamation point indicates that either there is an error in the value of a setting or that the values for a setting are not the same across all configurations.  In the following figure, the settings for *Command Arguments* are valid and consistent, but the *Deployment* settings are not.

<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="Inconsistent settings in the XBOX Gaming Project Control" width="621" height="119" data-path="images/gdk/tools/vs_gpc_inconsistent_settings.png" />

Note that a setting whose value varies by configuration does not always mean that the setting is configured incorrectly.  For example, it's quite common to have different command line arguments for different configurations.  In contrast, using different deployment methods per configuration is uncommon and therefore may be an indication that the deployment settings were inadvertently mismatched.  The presence of a red exclamation point is an indication that you might want to review your settings, rather than an absolute indication that the settings are incorrect.

Changes made to properties using the **XBOX Gaming Project Control** are written to the project file immediately.  No additional action in the form of an *Ok* or *Apply* button is needed.  All edits are fully integrated with Visual Studio's undo/redo stack.  Access the undo/redo stack using either the Visual Studio toolbar or the standard Ctrl-Z and Ctrl-Y key sequences.  The following figure shows an undo stack that contains several properties edited the **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="An undo stack with XBOX Gaming Project Control property edits" width="874" height="513" data-path="images/gdk/tools/vs_gpc_undo.png" />

The properties that can be edited using the **XBOX Gaming Project Control** can also be edited using the Visual Studio [C++ project property page](/tools/tools-console/visualstudio/durango-property-pages).  The values of all properties are kept in sync across the two windows as edits are made.

## Deployment Settings

Use the *Deployment* page to specify the deployment method and method-specific settings for the active configuration and platform.  Choose a deployment method by selecting one of the *Push*, *RfPC*, or *External* buttons.  The currently selected deployment method is indicated by a green highlight around the corresponding deployment method button.

Settings specific to a deployment method are displayed based on the method selected.  In the following figure, the *RfPC* deployment method is selected.  Edit boxes are available to change the launch string and to enter optional credentials.

<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 deployment options" width="903" height="462" data-path="images/gdk/tools/vs_gpc_runfrompc.png" />

If the deployment method is not the same across all configurations, the reason for the differences are shown in a control located to the right of the deployment method buttons.  In the following figure, the deployment page is currently editing the deployment settings for the *Profile* configuration whose deployment method is set to *RfPC*.  However, the deployment method for the *Release*  configuration is set to *Push* as noted in the deployment differences control.

<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="Different deploy methods per configuration" width="923" height="472" data-path="images/gdk/tools/vs_gpc_deploy_diff.png" />

The *Align* button can be used to synchronize the deployment settings across configurations, if desired.  Clicking the *Align* button in this case will change the deployment method for the *Release* configuration from *Push* to the method used in the current configuration and platform, *RfPC* in this case.

<a id="multiple_game_configs" />

## MicrosoftGameConfig.mgc Settings

The Visual Studio project system and msbuild files include support for specifying different [MicrosoftGameConfig.mgc](/build/core-features/common/game-config/MicrosoftGameConfig-toc) files for each build configuration. MicrosoftGameConfig.mgc files are renamed to MicrosoftGame.config when they are copied to the output directory when a project is built.

Clicking the *MicrosoftGame.config assigment* button opens a page that lets you specify the MicrosoftGameConfig.mgc file to use for each build configuration.  A default MicrosftGameConfig.mgc file can also be specified.  This default file will be used for all configurations unless explicitly overridden.

Use the *Project Default* dropdown to specify a default MicrosoftGameConfig.mgc file as shown in the following figure.  Note that when a project is first created using one of the Microsoft Game Development Kit (GDK) templates, a default MicrosoftGameConfig.mgc is implicitly set for you.

<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="Specifying a default MicrosoftGame.config file" width="1178" height="513" data-path="images/gdk/tools/vs_pgc_mgc_default.png" />

Configurations whose dropdown value is *Unselected* will use the default MicrosoftGameConfig.mgc file.  Select a file from the dropdown to override the default file for a given configuration as shown in the following figure.

<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="Overriding the default MicrosoftGame.config file" width="1172" height="478" data-path="images/gdk/tools/vs_pgc_mgc_override.png" />

## Command Arguments

Use the *Command Arguments* page to edit the arguments for each build configuration.  Separate edit boxes are provided for each configuration.

<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="Command Arguments in XBOX Gaming Project Control" width="588" height="439" data-path="images/gdk/tools/vs_pgc_command_args.png" />

## Logging of Module Loads

Use the *Logging of Module Loads* button to enable verbose debug output, which includes module loading information.  The slider on the button itself toggles the property for the active build configuration.

<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="Logging of Module Loads in the XBOX Gaming Project Control" width="710" height="430" data-path="images/gdk/tools/vs_pgc_log_module_load_button.png" />

Click the button to open a page that lets you specify values for all build configurations.

<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="Specifying Logging of Module Loads for each build configuration" width="614" height="310" data-path="images/gdk/tools/vs_pgc_log_module_load_configs.png" />

## Break on Suspend Timeout

Use the *Break execution on suspend timeout* button to [re-enable the 1 second suspend timeout](/tools/tools-console/visualstudio/debugging-with-visualstudio#vsdebug_gamelifecycle) when a debugger is attached.

The slider on the button itself toggles the property for the active build configuration.

<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="Break execution on suspend timeout in the XBOX Gaming Project Control" width="710" height="430" data-path="images/gdk/tools/vs_pgc_log_break_on_suspend_button.png" />

Click the button to open a page that lets you specify values for all build configurations.

<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="Specifying Break execution on suspend timeout for each build configuration" width="612" height="282" data-path="images/gdk/tools/vs_pgc_log_break_on_suspend_configs.png" />

## Advanced Controls

Use the *Advanced controls* dropdown to access the editing pages for the *Deploy from Outdir*, *LayoutDir*, *LayoutExtensionFilter*, and *OutDir* properties.

<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 dropdown" width="608" height="414" data-path="images/gdk/tools/vs_pgc_advanced_controls.png" />

Individual edit boxes or slider controls are provided to edit the property values for each configuration.

## See also

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

[Visual Studio properties for XBOX development](/tools/tools-console/visualstudio/durango-property-pages)


## Related topics

- [Visual Studio for console development](/tools/tools-console/visualstudio/visualstudio.md)
- [Visualstudio](/tools/tools-console/visualstudio/index.md)
- [MicrosoftGame.config overview](/build/core-features/common/game-config/MicrosoftGameConfig-Overview.md)
- [Debugging XBOX projects by using Visual Studio](/tools/tools-console/visualstudio/debugging-with-visualstudio.md)
- [XBOX Gaming Explorer](/tools/tools-console/visualstudio/xbox-gaming-explorer.md)
