Skip to main content
In current versions of the Microsoft Game Development Kit (GDK), the layout was optimized around code sharing and focused on specific platforms. Build integration for this layout relied heavily on hiding the complexity in MSBuild custom platforms. For the new layout, the focus is on simplifying the integration, supporting a growing list of target platforms, and improving support for both stock MSBuild platforms and non-Microsoft build systems.

Old headers and libraries layout

The existing file layout for the Microsoft GDK is summarized as follows.
The Gaming.Desktop.x64 custom MSBuild platforms implement the logic for building the include/lib paths that combine all this content in various ways. If you used CMake or a custom make solution, this logic had to be implemented there as well. For a detailed example, see the April 2025 version of CMakeExample. The old layout is still present in the October 2025 GDK to support both old and new styles. Both the new and old layouts are installed by default. The GDK setup now includes an option to install just the new layout. A future GDK will remove the old layout to reduce the hard drive footprint and overall download size. The current target date for removing the old layout will be one year from the time the October 2025 GDK is released.

New headers and libraries layout

For the October 2025 GDK release, the new layout offers an alternative layout for the headers and libraries that make the platform integration easier and able to accommodate additional platforms over time.

Using the new layout with MSBuild custom platforms

The existing Gaming.*.x64 MSBuild platforms use the old layout by default, but you can opt into the new layout by setting the GDKCrossPlatform property.
This adds the appropriate include/lib paths to the project instead of the various complex paths that the old layout used. In this new simplified integration, the extension libraries mechanism is no longer used. All content is available at build-time by default in the include/lib paths. The project then needs to link to the additional libraries it uses. Projects that are built on the older GDK project templates should contain statements like the following.
For the new layout, the Console_Libs property lists the core required libraries. The project needs to add to AdditionalDependencies the extension libraries it consumes because they’re each ‘opt-in’. The project also needs to copy the additional DLLs it uses into the layout. You can do this either through Custom Build steps that are typical of many DLL library integrations, or by editing the vcxproj or adding a props file to use the ReferenceCopyLocalPaths item group list. The MSBuild below lists all the possible DLLs but individual projects will only need some of these.
GameDKLatest is only set by the Microsoft GDK with XBOX Extensions. As a result, we introduced new environment variables that fully support side-by-side installation of both versions of the Microsoft GDK: GameDKCoreLatest is set by the Microsoft GDK.

Using a Directory.Build.props file

As a way to quickly validate existing GDK Gaming.*.x64 projects by using the new layout, place the following content into a file named Directory.Build.props in your source tree. This opts in to the new layout and includes most or all extension libraries even if not used by the project.
The GDKExtLibNames property isn’t used by the MSBuild rules when building with GDKCrossPlatform set to true. Because it’s already present for building with the older MSBuild rules, it’s used in this props file as a way to opt in to some additional DLLs in the layout.

How to update an x64 game to add ARM64

To add ARM64 support to an existing x64 game project, follow these steps:
  1. Use Visual Studio 2022. ARM64 support requires Visual Studio 2022. Visual Studio 2019 isn’t supported for ARM64 builds.
  2. Enable the new layout. Make sure your project uses the new layout by setting GDKCrossPlatform to true in your project file.
  3. Create ARM64 configurations. Copy your existing x64 configurations (such as Debug and Release) to create corresponding ARM64 configurations.
  4. Update library paths. Edit the VC++ Directories for your ARM64 configurations so the library path references lib\arm64 instead of lib\x64.
  5. Update XSAPI library references. Update the link statements for all configurations (not just ARM64) to use Microsoft.Xbox.Services.143.GDK.C.lib instead of Microsoft.Xbox.Services.142.GDK.C.lib.
  6. Update ReferenceCopyLocalPaths. Check for ReferenceCopyLocalPaths usage in your .vcxproj file that might need updating to reference the arm64 bin folder instead of x64.
If the startup of your title fails with error 0xc000007b, it means you have accidentally tried to load an x64 format DLL into your ARM64 process. Check your project system for ReferenceCopyLocalPaths items that might need updating.

Using the new layout with the MSBuild x64 platform

Instead of using the Gaming.Desktop.x64 platform, you can use the stock x64 platform to build for PC. In the old layout, this required adding <Import Project="...\ExtensionLibrary.props"> statements for the Extension Libraries as detailed in Using the x64 platform with the Microsoft Game Development Kit (GDK). In the new layout, the integration instructions are streamlined.
Add all required extension libraries to AdditionalDependencies along with the original list.
Opt-in extension library DLLs need to be copied into the binary directory as above by using a Custom Build action or by using the ReferenceCopyLocalPaths item group for the final layout. The remaining instructions for PreprocessorDefinitions and handling the .mgc file with image assets remain unchanged.

Using the new layout with CMake

When you use the Microsoft Visual Studio generators with CMake and use the Gaming.*.x64 custom MSBuild platforms, enable the new layout by using the following code.
In the CMakeGDKExample, remove the use of VS_GLOBAL_GDKExtLibNames and replace it with the following code (assuming CMake 3.21 or later) to copy the used extension DLLs into the layout.

Using the new layout with custom build systems

Building for Windows x64 by using the GDK requires the following.

Reading the build edition from an installed file

The new layout doesn’t contain the grdk.ini file. To find the edition information by parsing a file, use grdk.h. Here’s an example in PowerShell that works with older GDK releases as well.
Last modified on September 4, 2026