我的项目应该从哪里包含 new.h? (Visual Studio and/or SDK 损坏或版本不兼容?)

Where should my project include new.h from? (Visual Studio and/or SDK corruption or version incompatibility?)

我有一个项目,从 Visual Studio 2005 年的项目开始,现在是 Visual Studio 2019 年的项目。它是在 Windows 10 上使用 142 平台工具集构建的,但用于在 Windows 8.1 及更高版本上部署。所以它选择了Windows 8.1 SDK,并将WINVER,_WIN32_WINNT和_WIN32_WINDOWS都设置为0x0603。

这是一个 MFC 项目,因此 stdafx.h 几乎无处不在。这包括 afxwin.h,后者又包括 afx.h,然后又包括 new.h。这一切都在我的桌面开发机器上正常构建,版本为 Visual Studio 2019 Community。

升级到 "the latest" Visual Studio 版本 (16.6.2) 后,我刚刚尝试在笔记本电脑上构建项目。它无法构建,因为它找不到 new.h。据我所知,new.h 应该是 SDK 的一部分。但是 new.h 不在 Windows 8.1 SDK 中(或者至少:不是我的)。

但真正让我感到困惑的是,当我在成功构建(也配置为使用 Windows 8.1 SDK)中找到 new.h 时,它在 Windows 10 个 SDK。

我不清楚我是否有 (a) 一个错误的项目 (b) 1 个或更多错误的 Visual Studio 安装 (c) 1 个或更多错误的 SDK 安装。在这种情况下,我应该在哪里找到 new.h,这是否能说明我正在经历 a、b 或 c 中的哪一个?

案例 (d):您缺少 Windows SDK 8.1 在笔记本电脑上的安装。这需要与 VS 安装分开完成。来自 Visual Studio 2019 v16.0 发行说明 - Deprecations:

The Windows 8.1 SDK is no longer available in the Visual Studio installer. Please upgrade your C++ projects to the latest Windows 10 SDK. If you have a hard dependency on 8.1, you can download it from the Windows SDK archive.


[ EDIT ] 针对 Windows SDK 8.1 not 删除所有对 Windows 10 SDK 的引用,它仍然是需要和使用。例如,使用 v142 工具集和 v8.1 SDK 的 C++ MFC 项目的包含路径在我的机器上默认设置为以下内容。

C:\Program Files (x86)\Microsoft Visual Studio19\VC\Tools\MSVC.25.28610\include
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Tools\MSVC.25.28610\atlmfc\include
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Auxiliary\VS\include
C:\Program Files (x86)\Windows Kits\Include.0.10240.0\ucrt
C:\Program Files (x86)\Microsoft Visual Studio19\VC\Auxiliary\VS\UnitTest\include
C:\Program Files (x86)\Windows Kits.1\Include\um
C:\Program Files (x86)\Windows Kits.1\Include\shared
C:\Program Files (x86)\Windows Kits.1\Include\winrt
C:\Program Files (x86)\Windows Kits\NETFXSDK.7.2\Include\um