缘起
前一段时间,有网友遇到一个奇怪的问题,说他机器上的 vs2019 编译 C++ 工程报错。我当时一听就有两个怀疑:
1.工程设置不对。
2.vs2019 没装好。
因为新建一个最简单的工程,编译也报一样的错误,所以可以排除工程设置的问题了。那只有可能是 vs2019 的问题了。但是具体是哪里的问题呢?
他按照错误提示搜索到了如下链接:
https://developercommunity.visualstudio.com/content/problem/761788/msb8036-the-windows-sdk-version-100183620-was-not.html
据链接里的提示,做过尝试,没能解决问题。后来在我们沟通的过程中,他自己解决了问题,这不就是大名鼎鼎的橡皮鸭调试法吗?当他的问题解决后,我特意在本地重现了整个过程,做了一些调查,整理成本文,分享给大家。
编译受阻
我用 vs2019 新建了一个最简单的 Hello world 工程,编译,报错如下:
Error MSB8037 The Windows SDK version 10.0.18362.0 for Desktop C++ x86 Apps was not found. Install the required version of Windows SDK or change the SDK version in the project property pages or by right-clicking the solution and selecting "Retarget solution".
更直观的报错截图如下:

问题排查
既然提示找不到对应版本的 SDK ,那么先到工程属性里看一下对应的配置。在工程上, 右键 -> 属性 。在工程属性对话框中选择 Configuration Properties 下的 General 。在右侧查看 Windows SDK Version 的值,确实是 10.0.18362.0 ,如下图。
工程 SDK Version 配置
本地搜一下 10.0.18362.0 ,看看本地是否存在相关的路径。
everything 搜索结果
本地也存在相关路径。能想到的可以怀疑的地方都排除了。接下来请出我们的老朋友 —— process monitor 。
深入调查
打开 process monitor ,开启监视,在 vs 中开始编译,问题重现后,停止监视。
下面就要进行最重要的步骤了—— 过滤。
使用 process monitor 快速解决问题的关键在于过滤出与问题有关的事件!
我们需要根据什么条件过滤呢?
一般操作结果是成功的事件对我们帮助不大,所以首先过滤掉 Result 是 SUCCESS 的事件。
既然提示的是找不到










