Visual Studio 2019 支持说明

本主题将介绍 Microsoft 游戏开发工具包 (GDK) 对 Visual Studio 2019 的支持。 Microsoft 游戏开发工具包开发支持 Visual Studio 2019 16.11 版

注意

自 2022 年 10 月起,Visual Studio 2019 版本 16.0 - 16.9 不再受支持。

安装 Visual Studio 2019

安装 Visual Studio 2019 时,必须在设置过程中选择使用 C++ 的游戏开发工作负载,如以下屏幕截图所示。

“使用 C++ 进行游戏开发”工作负载对话框的屏幕截图

除了 Windows 电脑游戏开发所需的核心 C++ 工具之外,“使用 C++ 进行游戏开发”还包括使用 Microsoft 游戏开发工具包 (GDK) 构建 Windows 电脑游戏所需的 Windows 10 SDK 版本。

虽然这不是必需的,但安装“使用 C++ 进行桌面开发”工作负载将提供可能有用的其他工具和示例。

根据需要,可以选择安装其他可选工作负载或组件。

  • 如果要构建使用 Unity 的游戏,请安装使用 Unity 的游戏开发工作负载。

  • MVSC 生成工具的版本 v142 随“使用 C++ 进行游戏开发”工作负载一起安装。 如果需要,可将 Visual Studio 2019 集成开发环境 (IDE) 与 Visual Studio 2017 (v141) 中包含的 MSVC 工具配合使用。 使用较新的 IDE 而无需升级到新的工具集,这样可使你利用新的 IDE 功能,而无需更新源代码来使用新的编译器。

若要将 Visual Studio 2017 工具集与 Visual Studio 2019 IDE 配合使用,请在使用 C++ 进行桌面开发工作负载下安装 MSVC v141 - VS 2017 C++ x64/x86 生成工具 (v14.16) 组件,如以下屏幕截图所示。 自 2024 年 10 月版本起,不再支持 Visual Studio 2017 工具集。

将现有 Visual Studio 2017 项目迁移到 Visual Studio 2019

在大多数情况下,使用 Visual Studio 提供的升级向导可以将项目迁移到 Visual Studio 2019 而无需任何其他更改。 当你在 Visual Studio 2019 中打开一个 Visual Studio 2017 项目时,可看到以下“检查解决方案操作”对话框提示你升级。 要升级项目,请选择确定

Visual Studio 2019 中升级向导的“查看解决方案操作”对话框的屏幕截图,其中显示了 Visual Studio 2017 项目的重定向选项

还可以选择使用 Visual Studio 2019 IDE,无需升级生成工具。 若要执行此操作,请在检查解决方案操作对话框中选择取消

手动将项目升级到 Visual Studio 2019

如果你想要通过直接编辑项目文件 (.vcxproj) 来升级项目,需要进行以下更改。

  1. WindowsTargetPlatformVersion 添加到 Globals 属性组中。 将其值设置为 10.0。 以下是一个示例。

      <PropertyGroup Label="Globals">
        <WindowsTargetPlatformVersion>10.0</WindowsTargetPlatformVersion>
        ...
    
  2. PlatformToolset 的所有实例从 v141 更改为 v142。 以下是一个示例。

    <PlatformToolset>v141</PlatformToolset>
    ...
    <PlatformToolset>v142</PlatformToolset>  
    
  3. 重新生成项目。

clang/LLVM for Windows (ClangCl) 项目支持

Visual Studio 2019 还支持 clang/LLVM for Windows 开发。 这需要安装适用于 Windows 的 C++ Clang-cl适用于 v142 生成工具的 C++ Clang-cl (x64/x86),它们是单独的组件。

有关详细信息,请参阅 Microsoft 游戏开发工具包 (GDK) Clang 主题和 Microsoft Docs

已知问题

  • Visual Studio 2019 的 DirectXMath *IsNan 函数可能会在使用 /fp:fast 构建时失败。 解决方法是将 Visual Studio 2019(16.3 或更高版本)与 DirectXMath 3.14 或更高版本结合使用。 如果不这样做,你可以通过围绕这些函数的使用来放置 #pragma float_control 语句以绕开这一问题。

  • 在 v11 版本之前的 Windows clang/LLVM 中使用预编译头存在一些问题。 根据 PCH 和 C++ 模板的使用情况,可能需要添加 -fno-pch-instantiate-templates 以成功构建。

  • 通过 Microsoft 更新交付的 .NET Core 更新可能会阻止安装 Microsoft 游戏开发工具包 (GDK)。 若要解决这个问题,请更新 Visual Studio 实例或通过 Visual Studio 安装程序卸载 Microsoft.NET.Core.Component.SDK.2.1 组件,然后重新尝试安装(卸载)Microsoft 游戏开发工具包 (GDK)。

报告 bug

Visual C++ 编译程序的错误报告应通过 Visual Studio “报告问题...”来报告(如果可能)。请参阅“Microsoft Docs”和“开发人员社区”网站。 请务必阅读本页,了解有关为编译程序创建良好错误报告的详细信息。

注意

如果需要其他保密协议信息来重现问题,则可以在公开报告的问题中增加一条批注“仅限 Microsoft”。

有关适用于 Windows 编译程序的 clang/LLVM 的错误报告,请使用 https://bugs.llvm.org/

有关 Microsoft Standard C++ 库(亦称 STL)的 bug 报告,请使用 https://github.com/microsoft/STL/issues

另请参阅

用于电脑游戏开发的 Visual Studio