在不安装 Microsoft 游戏开发工具包的情况下配置项目

本主题介绍如何在引用提取的 Microsoft 游戏开发工具包 (GDK) 文件时配置项目以使用 MSBuild 进行构建。 请参阅项目配置示例部分,下载使用 MSBuild 和 CMake 的示例项目。

部分 所含内容
平台属性和目标文件 属于 GDK 的一部分的属性和目标文件的类型和位置。
替代 MSBuild 属性 如何覆盖属性以使用平面部署的 GDK
Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 项目自定义 将 Xbox 项目配置为适用于平面部署的 GDK 的步骤
GDK 的 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 属性覆盖 可用于平面部署的 GDK 的 Xbox 属性覆盖
Windows 10 SDK 的 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 属性覆盖 可用于平面部署的 Windows 10 SDK 的 Xbox 属性覆盖
Gaming.Xbox.XboxOne.x64 library 和 include 引用 Xbox One 项目的 library 和 include 引用路径
Gaming.Xbox.Scarlett.x64 library 和 include 引用 Xbox Series X|S 项目的 library 和 include 引用路径
Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 扩展库 扩展库的 Xbox 属性文件(即 Xbox.Game.Chat)
Gaming.Desktop.x64 项目自定义 将电脑桌面项目配置为适用于平面部署的 GDK 的步骤
GDK 的 Gaming.Desktop.x64 属性覆盖 可用于平面部署的 GDK 的电脑桌面属性覆盖
Windows 10 SDK 的 Gaming.Desktop.x64 属性覆盖 可用于平面部署的 Windows 10 SDK 的电脑桌面属性覆盖
Gaming.Desktop.x64 library 和 include 引用 电脑桌面项目的 library 和 include 引用路径。
Gaming.Desktop.x64 扩展库 扩展库的电脑桌面属性文件(即 Xbox.Game.Chat)
PC 端工具的属性配置 用于正确使用 PC 端工具的属性覆盖
特定于 Visual Studio 版本的覆盖 Visual Studio 版本所需的属性覆盖
Visual Studio 2019 平台覆盖 Visual Studio 2019 中平台文件夹位置的属性覆盖
Visual Studio 2022 平台覆盖 Visual Studio 2022 中平台文件夹位置的属性覆盖
项目配置示例 使用平面部署的 GDK 启动并运行的示例
CMake 示例 将项目与平面部署的 GDK 集成的 CMake 示例
MSBuild 示例 将项目与平面部署的 GDK 集成的 MSBuild 示例

平台属性和目标文件

GDK 提取的文件中包含一组属性和目标文件,用作生成 Gaming.Xbox.XboxOne.x64、Gaming.Xbox.Scarlett.x64 或 Gaming.Desktop.x64 平台的一部分。 这些平台是在使用定义的平台生成时从 Microsoft.Cpp.Default.props 查找导入的。 检查这些文件将有助于更好地了解平台 MSBuild 组件的工作原理,以及如何将它们最好地集成到生成系统中。

根据 Visual Studio 版本、平台工具集版本和平台目标,这些文件有十六个实例。 提取的 GDK 文件夹中的示例路径如下所示。

  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\Gaming.Xbox.XboxOne.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\Gaming.Xbox.Scarlett.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\Gaming.Xbox.XboxOne.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\Gaming.Xbox.Scarlett.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\Gaming.Xbox.XboxOne.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\Gaming.Xbox.Scarlett.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\gaming.desktop.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\gaming.desktop.x64
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\gaming.desktop.x64

Visual Studio 2019 和 Visual Studio 2022 的 v160 和 v170 文件夹的区别在于使用 v142 (v160) 或 v143 (v170) 平台工具集版本 (,该版本在 $ (PlatformToolset) 属性) 中定义。

返回到本主题顶部。

替代 MSBuild 属性

有多种方法可以替代项目中的 MSBuild 属性。 一种方便的方法是在与项目文件相同的目录中创建 Directory.Build.props 文件。 生成项目时,将自动应用此文件中定义的属性。 如果文件不存在,则不会应用替代。 这意味着无论是否安装了 Microsoft 游戏开发工具包 (GDK),都可以使用相同的项目文件。 如果安装了 Microsoft 游戏开发工具包 (GDK),请删除或重命名 Directory.Build.props 以使用正常的生成过程。

MSBuild 示例演示如何使用 Directory.Build.props 文件。

以下各部分介绍了我们建议你覆盖以指向所提取的 Microsoft 游戏开发工具包 (GDK) 的建议属性,以及在何处可以找到有关 lib 和 include 路径的更多详细信息。

返回到本主题顶部。

Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 项目自定义

需要项目自定义,才能使用 MSBuild 从提取的 GDK 生成 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 项目。 对于需要覆盖的属性,Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 之间的最重要差异是 Platform 属性定义。

GDK 的 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 属性覆盖

需要设置以下属性,以成功生成为 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 平台配置的项目。 它们应该在导入项目文件中定义的 Microsoft.Cpp.Default.props 之前导入。

被覆盖的属性的说明

  • BWOI_GDK_Path:并非必需的用户属性,但建议你将它设置为在将来的属性值中使用该属性以减少硬编码路径。
  • Platform:指定将用于编译项目的平台。 GDK 中的 Xbox 主机家庭选项为 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64。 该属性将设置为新项目模板的一部分。
  • XdkEditionTarget:覆盖生成编译所使用的 GDK 版本。 它是在 Platform.default.props 中定义的,派生自 XdkEdition(在 xdk.props 中设置的内部属性)。
  • DurangoXdkInstallPath: 覆盖提取的 GDK 的 Microsoft 游戏开发工具包 (GDK) 文件夹位置。 它是在 Platform.Edition.default.props 中定义的。
  • DefaultXdkEditionRootVS2019: 覆盖 Visual Studio 2019 兼容的 Platform 属性和目标文件的默认位置。 它是在 Platform.default.props 中定义的。 仅在 Visual Studio 2019 中使用项目时才应定义此属性。
  • XdkEditionRootVS2019: 覆盖 Visual Studio 2019 兼容的 Platform 属性和目标文件的位置。 它是在 Platform.props 中定义的。 仅在 Visual Studio 2019 中使用项目时才应定义此属性。
  • DefaultXdkEditionRootVS2022: 覆盖 Visual Studio 2022 兼容的 Platform 属性和目标文件的默认位置。 它是在 Platform.default.props 中定义的。 仅在 Visual Studio 2022 中使用项目时才应定义此属性。
  • XdkEditionRootVS2022: 覆盖 Visual Studio 2022 兼容的 Platform 属性和目标文件的位置。 它是在 Platform.props 中定义的。 仅在 Visual Studio 2022 中使用项目时才应定义此属性。
  • PlatformToolset:覆盖用于生成的特定版本的生成工具。 Visual Studio 2019 支持 v142。 Visual Studio 2022 支持 v142 和 v143, (默认定义 v143) 。 此属性在 Microsoft.Cpp.Defaults.props 中定义。

基于先前提取的文件夹示例的示例 Gaming.Xbox.Scarlett.x64 属性值,供参考:

<BWOI_GDK_Path>C:\ExtractedGDK\241000\</BWOI_GDK_Path>
<Platform>Gaming.Xbox.Scarlett.x64</Platform>
<XdkEditionTarget>241000</XdkEditionTarget>
<DurangoXdkInstallPath>$(BWOI_GDK_Path)Microsoft GDK\</DurangoXdkInstallPath>
<DefaultXdkEditionRootVS2019>$(XdkEditionTarget)\GXDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\$(Platform)\</DefaultXdkEditionRootVS2019>
<XdkEditionRootVS2019>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GXDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\$(Platform)\</XdkEditionRootVS2019>
<DefaultXdkEditionRootVS2022>$(XdkEditionTarget)\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\$(Platform)\</DefaultXdkEditionRootVS2022>
<XdkEditionRootVS2022>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\$(Platform)\</XdkEditionRootVS2022>
<PlatformToolset>$(PlatformToolset)</PlatformToolset>

要覆盖平台文件夹以检测 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 特定的 .props 和目标,请参阅有关 Visual Studio 平台覆盖的以下部分。

返回到本主题顶部。

Windows 10 SDK 的 Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 属性覆盖

仅在使用提取的 Windows 10 SDK 时才需要设置以下属性。 如果你使用的是已安装好的 Windows 10 SDK,则可以跳过此部分。

  • BWOI_Win10SDK_Path:并非必需的用户属性,但建议你将它设置为在将来的属性值中使用该属性以减少硬编码路径。
  • WindowsSdkDir:覆盖 Windows 10 SDK 的位置。
  • WindowsSdkDir_10: 覆盖 Windows 10 SDK (Windows 10) 的位置。 通过 Microsoft.Cpp.WindowsSDK.props 中的注册表项(在生成编译期间导入)对此进行检查。
  • UCRTContentRoot:覆盖通用 C 运行时库内容根目录的位置。 此属性在 uCRT.props 中定义。
  • UniversalCRTSdkDir:覆盖通用 C 运行时库 SDK(Visual C++ C 运行时)的位置。 通过 Microsoft.Cpp.WindowsSDK.props 中的注册表项(在生成编译期间导入)对此属性进行检查。
  • UniversalCRTSdkDir_10:覆盖通用 C 运行时库 SDK(Windows 10 的 Visual C++ C 运行时)的位置。 通过 Microsoft.Cpp.WindowsSDK.props 中的注册表项(在生成编译期间导入)对此属性进行检查。
  • WindowsSDK_ExecutablePath_x86:覆盖 Windows 10 SDK 中包含的 x86 工具的位置。 rc.exe 等工具位于此位置。 此属性在 Microsoft.Cpp.WindowsSDK.props 中定义。
  • WindowsSDK_ExecutablePath_x64:覆盖 Windows 10 SDK 中包含的 x64 工具的位置。 rc.exe 等工具位于此位置。 此属性在 Microsoft.Cpp.WindowsSDK.props 中定义。
  • WindowsTargetPlatformVersion:覆盖正在使用的 Windows 10 SDK 的版本。 此属性在 Platform.Edition.default.props 文件中定义(如果未定义,则使用本地路径)。
  • TargetPlatformVersion:覆盖正在使用的 Windows 10 SDK 的版本。 此属性在 Microsoft.Cpp.WindowsSDK.props 中定义。

基于先前提取的文件夹示例的示例属性值,供参考:

<BWOI_Win10SDK_Path>C:\ExtractedWin10SDK\</BWOI_Win10SDK_Path>
<WindowsSdkDir>$(BWOI_Win10SDK_Path)Windows Kits\10\</WindowsSdkDir>
<WindowsSdkDir_10>$(WindowsSdkDir)</WindowsSdkDir_10>
<UCRTContentRoot>$(WindowsSdkDir)</UCRTContentRoot>
<UniversalCRTSdkDir>$(WindowsSdkDir)</UniversalCRTSdkDir>
<UniversalCRTSdkDir_10>$(WindowsSdkDir)</UniversalCRTSdkDir_10>
<WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\$(WindowsTargetPlatformVersion)\x86</WindowsSDK_ExecutablePath_x86>
<WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\$(WindowsTargetPlatformVersion)\x64</WindowsSDK_ExecutablePath_x64>
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
<TargetPlatformVersion>$(WindowsTargetPlatformVersion)</TargetPlatformVersion>

Microsoft GDK 需要 Windows 10 SDK (19041) 或更高版本。 如果需要,可以使用 Windows SDK(20348、22000 或 22621),但这不是必需的。

自 2023 年 10 月版本起,需要 Windows 11 SDK (22000) 或更高版本。 如果需要,可以使用 Windows 11 SDK 版本 22H2 (22621),但这不是必需的。 将“10.0.19041.0”的所有实例替换为“10.0.22000.0”。

返回到本主题顶部。

Gaming.Xbox.XboxOne.x64 library 和 include 引用

由于它们派生自前面所提及的覆盖路径,因此 library 和 include 引用需直接覆盖。 本部分仅供参考。

在 Gaming.Xbox.XboxOne.x64 平台文件夹内的 Platform.Edition.props 中定义的引用。 这些属性的构建方式如下。

<Console_LibRoot>$(WindowsSDKDir)Lib\$(TargetPlatformVersion)\</Console_LibRoot>
<Console_EndpointLibRoot>$(DurangoXdkInstallPath)GXDK\gameKit\Lib\amd64;$(DurangoXdkInstallPath)GXDK\gameKit\Lib\amd64\XboxOne;$(DurangoXdkInstallPath)GRDK\gameKit\Lib\amd64</Console_EndpointLibRoot>
<Console_EndpointIncludeRoot>$(DurangoXdkInstallPath)GXDK\gameKit\Include\;$(DurangoXdkInstallPath)GXDK\gameKit\Include\XboxOne\;$(DurangoXdkInstallPath)GRDK\gameKit\Include\</Console_EndpointIncludeRoot>
<Console_WindowsIncludeRoot>$(WindowsSDKDir)Include\$(TargetPlatformVersion)\</Console_WindowsIncludeRoot>
<Console_Libs Condition="'$(Console_Libs)'==''">pixevt.lib;d3d12_x.lib;xgameplatform.lib;xgameruntime.lib;xmem.lib;xg_x.lib</Console_Libs>
<Console_UCRTRedistDebug>$(WindowsSDKDir)bin\$(TargetPlatformVersion)\x64\ucrt\</Console_UCRTRedistDebug>
<Console_SdkRoot>$(DurangoXdkInstallRoot)</Console_SdkRoot>
<Console_SdkIncludeRoot>$(Console_EndpointIncludeRoot);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);$(VC_VC_IncludePath);</Console_SdkIncludeRoot>
<Console_SdkLibPath>$(Console_EndpointLibRoot);$(WindowsSDK_LibraryPath_x64);$(UniversalCRT_LibraryPath_x64);$(VC_LibraryPath_VC_x64_OneCore)</Console_SdkLibPath>

MSBuild 日志中 library 和 include 属性的示例定义:

Console_EndpointIncludeRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\XboxOne\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Include\
Console_EndpointLibRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64\XboxOne;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Lib\amd64
Console_ExtLibPaths = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
Console_ExtLibPathsString = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
Console_GRDKExtLibNamesString = PlayFab.Party.Cpp|PlayFab.PartyXboxLive.Cpp|Xbox.Game.Chat.2.Cpp.API|Xbox.Services.API.C
Console_GRDKExtLibRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\
Console_LibRoot = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\
Console_Libs = pixevt.lib;d3d12_x.lib;xgameplatform.lib;xgameruntime.lib;xmem.lib;xg_x.lib
Console_SdkIncludeRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\Include;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\XboxOne\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\include;;
Console_SdkLibPath = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\Lib\x64\Release\v143;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64\XboxOne;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Lib\amd64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64;;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\lib\onecore\x64
Console_SdkRoot = C:\ExtractedGDK\241000\Microsoft GDK\
Console_SdkToolPath = C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\bin\XboxOne\
Console_UCRTRedistDebug = C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\ucrt\
Console_WindowsIncludeRoot = C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\

返回到本主题顶部。

Gaming.Xbox.Scarlett.x64 library 和 include 引用

由于它们派生自前面所提及的覆盖路径,因此 library 和 include 引用需直接覆盖。 本部分仅供参考。

在 Gaming.Xbox.Scarlett.x64 平台文件夹内的 Platform.Edition.props 中定义的引用。 这些属性的构建方式如下。

<Console_LibRoot>$(WindowsSDKDir)Lib\$(TargetPlatformVersion)\</Console_LibRoot>
<Console_EndpointLibRoot>$(DurangoXdkInstallPath)GXDK\gameKit\Lib\amd64;$(DurangoXdkInstallPath)GXDK\gameKit\Lib\amd64\Scarlett;$(DurangoXdkInstallPath)GRDK\gameKit\Lib\amd64</Console_EndpointLibRoot>
<Console_EndpointIncludeRoot>$(DurangoXdkInstallPath)GXDK\gameKit\Include\;$(DurangoXdkInstallPath)GXDK\gameKit\Include\Scarlett\;$(DurangoXdkInstallPath)GRDK\gameKit\Include\</Console_EndpointIncludeRoot>
<Console_WindowsIncludeRoot>$(WindowsSDKDir)Include\$(TargetPlatformVersion)\</Console_WindowsIncludeRoot>
<Console_Libs Condition="'$(Console_Libs)'==''">pixevt.lib;d3d12_xs.lib;xgameplatform.lib;xgameruntime.lib;xmem.lib;xg_xs.lib</Console_Libs>
<Console_UCRTRedistDebug>$(WindowsSDKDir)bin\$(TargetPlatformVersion)\x64\ucrt\</Console_UCRTRedistDebug>
<Console_SdkRoot>$(DurangoXdkInstallRoot)</Console_SdkRoot>
<Console_SdkIncludeRoot>$(Console_EndpointIncludeRoot);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);$(VC_VC_IncludePath);</Console_SdkIncludeRoot>
<Console_SdkLibPath>$(Console_EndpointLibRoot);$(WindowsSDK_LibraryPath_x64);$(UniversalCRT_LibraryPath_x64);$(VC_LibraryPath_VC_x64_OneCore)</Console_SdkLibPath>

MSBuild 日志中 library 和 include 属性的示例定义:

Console_EndpointIncludeRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\Scarlett\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Include\
Console_EndpointLibRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64\Scarlett;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Lib\amd64
Console_ExtLibPaths = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
Console_ExtLibPathsString = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
Console_GRDKExtLibNamesString = PlayFab.Party.Cpp|PlayFab.PartyXboxLive.Cpp|Xbox.Game.Chat.2.Cpp.API|Xbox.Services.API.C
Console_GRDKExtLibRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\
Console_LibRoot = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\
Console_Libs = pixevt.lib;d3d12_xs.lib;xgameplatform.lib;xgameruntime.lib;xmem.lib;xg_xs.lib
Console_SdkIncludeRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\Include;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Include\Scarlett\;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\include;;
Console_SdkLibPath = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\Lib\x64\Release\v143;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64;C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\gameKit\Lib\amd64\Scarlett;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Lib\amd64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64;C:\Program Files (x86)\Windows Kits\10\lib\10.0.19041.0\ucrt\x64;;C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\lib\onecore\x64
Console_SdkRoot = C:\ExtractedGDK\241000\Microsoft GDK\
Console_SdkToolPath = C:\ExtractedGDK\241000\Microsoft GDK\241000\GXDK\bin\Scarlett\
Console_UCRTRedistDebug = C:\Program Files (x86)\Windows Kits\10\bin\10.0.19041.0\x64\ucrt\
Console_WindowsIncludeRoot = C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\

返回到本主题顶部。

Gaming.Xbox.XboxOne.x64 和 Gaming.Xbox.Scarlett.x64 扩展库

扩展库适用于 Xbox.Services.API.C、Xbox.Game.Chat.2.Cpp.API、Xbox.XCurl.API、Xbox.LibHttpClient、PlayFab.Party.Cpp 和 PlayFab.PartyXboxLive.Cpp。 如果你正在使用这些功能,应将它们导入项目中,并根据以下 .props 文件中定义的内容覆盖关联的属性。

Microsoft GDK (2024 年 10 月) 或更高版本:

  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Game.Chat.2.Cpp.API\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\PlayFab.Party.Cpp\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\PlayFab.PartyXboxLive.Cpp\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\220600\GRDK\ExtensionLibraries\PlayFab.Services.C\ExtensionLibrary.props

Microsoft GDK (2024 年 6 月) 或更早:

  • C:\ExtractedGDK\241000\Microsoft GDK\230600\GRDK\ExtensionLibraries\Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\230600\GRDK\ExtensionLibraries\Xbox.Game.Chat.2.Cpp.API\DesignTime\CommonConfiguration\neutral\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\230600\GRDK\ExtensionLibraries\PlayFab.Party.Cpp\DesignTime\CommonConfiguration\neutral\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\230600\GRDK\ExtensionLibraries\PlayFab.PartyXboxLive.Cpp\DesignTime\CommonConfiguration\neutral\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\230600\GRDK\ExtensionLibraries\PlayFab.Services.C\DesignTime\CommonConfiguration\neutral\ExtensionLibrary.props

注意: Xbox.Services.API.C 的 .props 文件添加了 Appnotify.lib、crypt32.lib 和 winhttp.lib 作为附加依赖项。

扩展库属性在目标平台文件夹内的 Platform.Edition.props 中定义。 下面的示例说明如何构造这些属性。

<GDKExtLibNames Condition="'$(GDKExtLibNames)'==''">Xbox.Services.API.C</GDKExtLibNames>
<Console_GRDKExtLibRoot>$(DurangoXdkInstallPath)GRDK\ExtensionLibraries\</Console_GRDKExtLibRoot>
<Console_GRDKExtLibNamesString>$([System.String]::Join('|', $([System.IO.Directory]::GetDirectories(&quot;$(Console_GRDKExtLibRoot)&quot;))).Replace('$(Console_GRDKExtLibRoot)',''))</Console_GRDKExtLibNamesString>
<Console_ExtLibPathsString>$([System.Text.RegularExpressions.Regex]::Replace($(GDKExtLibNames), '($(Console_GRDKExtLibNamesString))','$(Console_GRDKExtLibRoot)%24%26\ExtensionLibrary.props'))</Console_ExtLibPathsString>
<Console_ExtLibPaths>$([MSBuild]::Unescape($(Console_ExtLibPathsString)))</Console_ExtLibPaths>

GDKExtLibNames 允许定义最多五个库。 如果未定义该属性,则默认为 Xbox.Services.API.C。

返回到本主题顶部。

Gaming.Desktop.x64 项目自定义

需要项目自定义,才能使用 MSBuild 从提取的 Microsoft 游戏开发工具包 (GDK) 生成 Gaming.Desktop.x64 项目。

注意

Gaming.Desktop.x64、Gaming.Xbox.Scarlett.x64 和 Gaming.Xbox.XboxOne.x64 属性替代之间的主要区别最小。 务必注意,Gaming.Desktop.x64 文件位于 GRDK 路径中,这一点非常重要。 Gaming.Xbox.Scarlett.x64 和 Gaming.Xbox.XboxOne.x64 文件位于 GXDK 路径中(不包括扩展库)。

GDK 的 Gaming.Desktop.x64 属性覆盖

需要设置以下属性,以成功生成为 Gaming.Desktop.x64 平台配置的项目。 这些属性应该在导入项目文件中定义的 Microsoft.Cpp.Default.props 之前导入。

被覆盖的属性的说明

  • BWOI_GDK_Path:并非必需的用户属性,但建议你将它设置为在将来的属性值中使用该属性以减少硬编码路径。
  • Platform:指定将用于编译项目的平台。 Microsoft 游戏开发工具包 (GDK) 中的平台是 Gaming.Desktop.x64。
  • XdkEditionTarget:覆盖生成编译所使用的 GDK 版本。 此属性是在 Platform.default.props 中定义的,派生自 XdkEdition(在 xdk.props 中设置的内部属性)。
  • DurangoXdkInstallPath: 覆盖提取的 GDK 的 Microsoft 游戏开发工具包 (GDK) 文件夹位置。 它是在 Platform.Edition.default.props 中定义的。
  • DefaultXdkEditionRootVS2019: 覆盖 Visual Studio 2019 兼容的 Platform 属性和目标文件的默认位置。 它是在 Platform.default.props 中定义的。 DefaultXdkEditionRootVS2019 仅在 Visual Studio 2019 中使用项目时才应定义。
  • XdkEditionRootVS2019: 覆盖 Visual Studio 2019 兼容的 Platform 属性和目标文件的位置。 它是在 Platform.default.props 中定义的。 XdkEditionRootVS2019 仅在 Visual Studio 2019 中使用项目时才应定义。
  • DefaultXdkEditionRootVS2022: 覆盖 Visual Studio 2022 兼容的 Platform 属性和目标文件的默认位置。 它是在 Platform.default.props 中定义的。 DefaultXdkEditionRootVS2022 仅在 Visual Studio 2022 中使用项目时才应定义。
  • XdkEditionRootVS2022: 覆盖 Visual Studio 2022 兼容的 Platform 属性和目标文件的位置。 它是在 Platform.default.props 中定义的。 XdkEditionRootVS2022 仅在 Visual Studio 2022 中使用项目时才应定义。
  • PlatformToolset:覆盖用于生成的特定版本的生成工具。 Visual Studio 2019 支持 v142。 Visual Studio 2022 支持 v142 和 v143, (默认定义 v143) 。 此属性在 Microsoft.Cpp.Defaults.props 中定义。

基于先前提取的文件夹示例的示例 Gaming.Desktop.x64 的属性值,以供参考:

<BWOI_GDK_Path>C:\ExtractedGDK\241000\</BWOI_GDK_Path>
<Platform>Gaming.Desktop.x64</Platform>
<XdkEditionTarget>241000</XdkEditionTarget>
<DurangoXdkInstallPath>$(BWOI_GDK_Path)Microsoft GDK\</DurangoXdkInstallPath>
<DefaultXdkEditionRootVS2019>$(XdkEditionTarget)\GRDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\$(Platform)\</DefaultXdkEditionRootVS2019>
<XdkEditionRootVS2019>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GRDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms\$(Platform)\</XdkEditionRootVS2019>
<DefaultXdkEditionRootVS2022>$(XdkEditionTarget)\GRDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\$(Platform)\</DefaultXdkEditionRootVS2022>
<XdkEditionRootVS2022>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GRDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms\$(Platform)\</XdkEditionRootVS2022>
<PlatformToolset>$(PlatformToolset)</PlatformToolset>

要覆盖平台文件夹以检测 Gaming.Desktop.x64 特定的 .props 和目标,请参阅有关 Visual Studio 平台覆盖的以下部分。

返回到本主题顶部。

Windows 10 SDK 的 Gaming.Desktop.x64 属性覆盖

仅在使用提取的 Windows 10 SDK 时才需要设置以下属性。 如果你使用的是已安装好的 Windows 10 SDK,则可以跳过此部分。

  • BWOI_Win10SDK_Path:并非必需的用户属性,但建议你将它设置为在将来的属性值中使用该属性以减少硬编码路径。
  • WindowsSdkDir:覆盖 Windows 10 SDK 的位置。
  • WindowsSdkDir_10:覆盖 Windows 10 SDK (Windows 10) 的位置。 通过 Microsoft.Cpp.WindowsSDK.props 中的注册表项(在生成编译期间导入)对此属性进行检查。
  • UCRTContentRoot:覆盖通用 CRT 内容根目录的位置。 此属性在 uCRT.props 中定义。
  • UniversalCRTSdkDir:覆盖通用 CRT SDK(Visual C++ C 运行时)的位置。 通过 Microsoft.Cpp.WindowsSDK.props 中的注册表项(在生成编译期间导入)对此进行检查。
  • UniversalCRTSdkDir_10:覆盖通用 CRT SDK(Windows 10 的 Visual C++ C 运行时)的位置。 通过 Microsoft.Cpp.WindowsSDK.props 中的注册表项(在生成编译期间导入)对此进行检查。
  • WindowsSDK_ExecutablePath_x86:覆盖 Windows 10 SDK 中包含的 x86 工具的位置。 rc.exe 等工具位于此位置。 此属性在 Microsoft.Cpp.WindowsSDK.props 中定义。
  • WindowsSDK_ExecutablePath_x64:覆盖 Windows 10 SDK 中包含的 x64 工具的位置。 rc.exe 等工具位于此位置。 此属性在 Microsoft.Cpp.WindowsSDK.props 中定义。
  • WindowsTargetPlatformVersion:覆盖正在使用的 Windows 10 SDK 的版本。 它在 Platform.Edition.default.props 文件夹中定义(如果未定义,则使用本地路径)。
  • TargetPlatformVersion:覆盖正在使用的 Windows 10 SDK 的版本。 此属性在 Microsoft.Cpp.WindowsSDK.props 中定义。

基于先前提取的文件夹示例的示例属性值,供参考:

<BWOI_Win10SDK_Path>C:\ExtractedWin10SDK\</BWOI_Win10SDK_Path>
<WindowsSdkDir>$(BWOI_Win10SDK_Path)Windows Kits\10\</WindowsSdkDir>
<WindowsSdkDir_10>$(WindowsSdkDir)</WindowsSdkDir_10>
<UCRTContentRoot>$(WindowsSdkDir)</UCRTContentRoot>
<UniversalCRTSdkDir>$(WindowsSdkDir)</UniversalCRTSdkDir>
<UniversalCRTSdkDir_10>$(WindowsSdkDir)</UniversalCRTSdkDir_10>
<WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\$(WindowsTargetPlatformVersion)\x86</WindowsSDK_ExecutablePath_x86>
<WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\$(WindowsTargetPlatformVersion)\x64</WindowsSDK_ExecutablePath_x64>
<WindowsTargetPlatformVersion>10.0.19041.0</WindowsTargetPlatformVersion>
<TargetPlatformVersion>$(WindowsTargetPlatformVersion)</TargetPlatformVersion>

Microsoft GDK 需要 Windows 10 SDK (19041) 或更高版本。 如果需要,可以使用 Windows 10 SDK (20348),但这不是必需的。

返回到本主题顶部。

Gaming.Desktop.x64 library 和 include 引用

由于它们派生自前面所提及的覆盖路径,因此 library 和 include 引用需直接覆盖。 本部分仅供参考。

在 Gaming.Xbox.Desktop.x64 平台文件夹内的 Platform.Edition.props 中定义的引用。 这些属性的构建方式如下。

<Console_LibRoot>$(WindowsSDKDir)Lib\$(TargetPlatformVersion)\</Console_LibRoot>
<Console_EndpointLibRoot>$(DurangoXdkInstallPath)GRDK\gameKit\Lib\amd64</Console_EndpointLibRoot>
<Console_EndpointIncludeRoot>$(DurangoXdkInstallPath)GRDK\gameKit\Include\</Console_EndpointIncludeRoot>
<Console_WindowsIncludeRoot>$(WindowsSDKDir)Include\$(TargetPlatformVersion)\</Console_WindowsIncludeRoot>
<Console_Libs>dxguid.lib;D3D12.lib;dxgi.lib;runtimeobject.lib;xGameRuntime.lib;</Console_Libs>
<Console_UCRTRedistDebug>$(WindowsSDKDir)bin\$(TargetPlatformVersion)\x64\ucrt\</Console_UCRTRedistDebug>
<Console_SdkRoot>$(DurangoXdkInstallRoot)</Console_SdkRoot>
<Console_SdkIncludeRoot>$(Console_EndpointIncludeRoot);$(WindowsSDK_IncludePath);$(UniversalCRT_IncludePath);$(VC_VC_IncludePath);</Console_SdkIncludeRoot>
<Console_SdkLibPath>$(Console_EndpointLibRoot);$(Console_LibRoot)um\x64;$(Console_LibRoot)ucrt\x64</Console_SdkLibPath>

MSBuild 日志中 library 和 include 属性的示例定义:

Console_EndpointIncludeRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Include\
Console_EndpointLibRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Lib\amd64
Console_ExtLibPaths = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
Console_ExtLibPathsString = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
Console_GRDKExtLibNamesString = PlayFab.Party.Cpp|PlayFab.PartyXboxLive.Cpp|Xbox.Game.Chat.2.Cpp.API|Xbox.Services.API.C
Console_GRDKExtLibRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\
Console_LibRoot = C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\
Console_Libs = dxguid.lib;D3D12.lib;dxgi.lib;runtimeobject.lib;xGameRuntime.lib;
Console_SdkIncludeRoot = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\Include;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Include\;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\um;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\shared;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\winrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\cppwinrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\ucrt;;C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC\Tools\MSVC\14.30.30705\include;;
Console_SdkLibPath = C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\Lib\x64\Release\v143;C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\gameKit\Lib\amd64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\um\x64;C:\Program Files (x86)\Windows Kits\10\Lib\10.0.19041.0\ucrt\x64
Console_SdkRoot = C:\ExtractedGDK\241000\Microsoft GDK\
Console_WindowsIncludeRoot = C:\Program Files (x86)\Windows Kits\10\Include\10.0.19041.0\

返回到本主题顶部。

Gaming.Desktop.x64 扩展库

Xbox.Services.API.C、Xbox.Game.Chat.2.Cpp.API、Xbox.XCurl.API、PlayFab.Party.Cpp 和 PlayFab.PartyXboxLive.Cpp 有扩展库。 如果你正在使用这些功能,应将它们导入项目中,并根据以下 .props 文件中定义的内容覆盖适当的属性。

  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\Xbox.Game.Chat.2.Cpp.API\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\PlayFab.Party.Cpp\ExtensionLibrary.props
  • C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\ExtensionLibraries\PlayFab.PartyXboxLive.Cpp\ExtensionLibrary.props

注意: Xbox.Services.API.C 的 .props 文件已经添加了 Appnotify.lib 作为额外的依赖,则需要将该库导入项目中。

扩展库属性在目标平台文件夹内的 Platform.Edition.props 中定义。 下面的示例说明如何构造这些属性。

<GDKExtLibNames Condition="'$(GDKExtLibNames)'==''">Xbox.Services.API.C</GDKExtLibNames>
<Console_GRDKExtLibRoot>$(DurangoXdkInstallPath)GRDK\ExtensionLibraries\</Console_GRDKExtLibRoot>
<Console_GRDKExtLibNamesString>$([System.String]::Join('|', $([System.IO.Directory]::GetDirectories(&quot;$(Console_GRDKExtLibRoot)&quot;))).Replace('$(Console_GRDKExtLibRoot)',''))</Console_GRDKExtLibNamesString>
<Console_ExtLibPathsString>$([System.Text.RegularExpressions.Regex]::Replace($(GDKExtLibNames), '($(Console_GRDKExtLibNamesString))','$(Console_GRDKExtLibRoot)%24%26\ExtensionLibrary.props'))</Console_ExtLibPathsString>
<Console_ExtLibPaths>$([MSBuild]::Unescape($(Console_ExtLibPathsString)))</Console_ExtLibPaths>

GDKExtLibNames 允许定义最多五个库。 如果未定义,则默认为 Xbox.Services.API.C。

返回到本主题顶部。

PC 端工具的属性覆盖

将 Microsoft 游戏开发工具包 (GDK) 用作提取的平面部署时,如果你也在使用 PC 端工具,则建议你定义这些属性。

<GameDK>$(BWOI_Win10SDK_Path)</GameDK>
<GameDKLatest>$(BWOI_Win10SDK_Path)$(XDKEditionTarget)\</GameDKLatest>
<GRDKLatest>$(GameDKLatest)GRDK\</GRDKLatest>
<GXDKLatest>$(GameDKLatest)GXDK\</GXDKLatest>

特定于 Visual Studio 版本的覆盖

需要覆盖一些版本特定的 Visual Studio 属性,才能与无需安装的内部版本配合得当,本节详述这些属性。

Visual Studio 2019 平台覆盖

从 Visual Studio 2019 开始已弃用 _PlatformFolder 属性。 支持不安装的项目配置的解决方案需要在 Visual Studio 2019 中执行其他步骤。

要执行此操作,请将所安装的 Visual Studio 2019 版本中的所需文件复制到提取的 GDK 路径。 例如:

  • 对于 v142 平台工具集,路径为 C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160

应复制这些内容以与以下路径的文件夹结构相匹配。

  • 对于 v142 平台工具集: C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms

注意

前面的示例涉及将文件直接复制到 ExtractedGDK 文件夹。 如果你希望将提取的 GDK 和 Visual Studio VC 目标文件分别用于引用/可维护性,可以将 ExtractedGDK 和 VC 目标复制到新的组合文件夹路径中(如上文所示)以供你的生成系统引用。

示例如下。

  • C:\Program Files (x86) \Microsoft Visual Studio\2019\Enterprise\MSBuild\Microsoft\VC\v160 root (*.*) 复制到 C:\ExtractedGDK\241000_CombinedGDK\ 文件夹中的类似路径。
  • 将 *C:\ExtractedGDK\241000\Microsoft GDK* 中的所有文件复制到 C:\ExtractedGDK\241000_CombinedGDK\ 文件夹中的类似路径中。
  • references/paths/properties 更改为指向 C:\ExtractedGDK\241000_CombinedGDK\ 等效路径。

完成此操作后,在 Visual Studio 2019 中调用生成时,需要覆盖以下属性以正确找到 Platform 属性和目标文件位置。

  • DisableInstalledVCTargetsUse 设置为 true
  • VCTargetsPath16:覆盖确定 Visual Studio 2019 生成工具 (v160) 属性和目标文件位置的 Visual Studio 路径。

注意

由于 VC 目标路径属性是定义属性的 XdkEditionRootVS2019 一部分,因此在这种情况下可以选择避免 XdkEditionRootVS2019 设置。

基于先前提取的文件夹示例的示例属性值,以供参考:

<DisableInstalledVCTargetsUse>true</DisableInstalledVCTargetsUse>
<VCTargetsPath16>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GXDK\VS2019\flatDeployment\MSBuild\Microsoft\VC\v160\</VCTargetsPath16>

注意

在你希望将 ExtractedGDK 和 VC 目标分别用于引用/可维护性的情况下,可以这样指定 VCTargetsPath 属性(其中 $(CombinedGDK) 是你已创建的新位置)。

  • VCTargetsPath16 设置为 $(CombinedGDK)\v160\

要应用 Windows 10 SDK 覆盖的 Visual Studio 2019 (16.5) 属性

使用 Visual Studio 2019 版本 16.5 或更高版本时,需要设置另一个属性,以确保 Windows 10 SDK 属性覆盖得到正确应用,如下所示。

<ClearDevCommandPromptEnvVars>false</ClearDevCommandPromptEnvVars>
<VCToolsVersion />

返回到本主题顶部。

Visual Studio 2022 平台覆盖

从 Visual Studio 2019 开始已弃用 _PlatformFolder 属性。 支持不安装的项目配置的解决方案需要在 Visual Studio 2022 中执行其他步骤。

要执行此操作,请将所安装的 Visual Studio 2022 版本中的所需文件复制到提取的 GDK 路径。 例如:

  • 对于 v142 平台工具集,路径为 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v160
  • 对于 v143 平台工具集,路径为 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170

应复制这些内容以与以下路径的文件夹结构相匹配。

  • 对于 v142 平台工具集: C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v160\Platforms
  • 对于 v143 平台工具集: C:\ExtractedGDK\241000\Microsoft GDK\241000\GRDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\Platforms

注意

前面的示例涉及将文件直接复制到 ExtractedGDK 文件夹。 如果你希望将提取的 GDK 和 Visual Studio VC 目标文件分别用于引用/可维护性,可以将 ExtractedGDK 和 VC 目标复制到新的组合文件夹路径中(如上文所示)以供你的生成系统引用。

示例如下。

  • 将所有文件从 C:\Program Files\Microsoft Visual Studio\2022\Enterprise\MSBuild\Microsoft\VC\v170 root (*.*) 复制到 C:\ExtractedGDK\241000_CombinedGDK\ 文件夹中的类似路径。
  • 将 *C:\ExtractedGDK\241000\Microsoft GDK* 中的所有文件复制到 C:\ExtractedGDK\241000_CombinedGDK\ 文件夹中的类似路径中。
  • references/paths/properties 更改为指向 C:\ExtractedGDK\241000_CombinedGDK\ 等效路径。

完成此操作后,在 Visual Studio 2022 中调用生成时,需要覆盖以下属性以正确找到 Platform 属性和目标文件位置。

  • DisableInstalledVCTargetsUse 设置为 true
  • VCTargetsPath16:覆盖确定 Visual Studio 2019 生成工具 (v160) 属性和目标文件位置的 Visual Studio 路径。
  • VCTargetsPath17:覆盖确定 Visual Studio 2022 生成工具 (v170) 属性和目标文件位置的 Visual Studio 路径。

注意

由于 VC 目标路径属性是定义属性的 XdkEditionRootVS2022 一部分,因此在这种情况下可以选择避免 XdkEditionRootVS2022 设置。

基于先前提取的文件夹示例的示例属性值,以供参考:

<DisableInstalledVCTargetsUse>true</DisableInstalledVCTargetsUse>
<VCTargetsPath16>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v160\</VCTargetsPath16>
<VCTargetsPath17>$(DurangoXdkInstallPath)$(XdkEditionTarget)\GXDK\VS2022\flatDeployment\MSBuild\Microsoft\VC\v170\</VCTargetsPath17>

注意

在你希望将 ExtractedGDK 和 VC 目标分别用于引用/可维护性的情况下,可以这样指定 VCTargetsPath 属性(其中 $(CombinedGDK) 是你已创建的新位置)。

  • VCTargetsPath16 设置为 $(CombinedGDK)\v160\
  • VCTargetsPath17 设置为 $(CombinedGDK)\v170\

要应用 Windows 10 SDK 覆盖的 Visual Studio 2022 属性

此外,需要设置另一个属性,以确保 Windows 10 SDK 属性覆盖得到正确应用,如下所示。

<ClearDevCommandPromptEnvVars>false</ClearDevCommandPromptEnvVars>

返回到本主题顶部。

项目配置示例

本节介绍如何在无安装的情况下获取代码示例。

CMake 示例

可从 Xbox 开发者下载页面下载 CMakeExample 示例(包括用于启动和运行的指令)以供参考。 在"选择文件类型"下,选择"GDK",然后在"选择生成/版本号"下,选择最新的"仅示例"项。

返回到本主题顶部。

MSBuild 示例

可从 Xbox 开发者下载页面下载 BWOIExample 示例(包括用于启动和运行的指令)以供参考。 在"选择文件类型"下,选择"GDK",然后在"选择生成/版本号"下,选择最新的"仅示例"项。

返回到本主题顶部。

另请参阅

在不安装 Microsoft 游戏开发工具包的情况下使用工具

在不安装的情况下使用 Microsoft 游戏开发工具包