缘起
前一段时间,有网友遇到一个奇怪的问题,说他机器上的 vs2019 编译 C++ 工程报错。我当时一听就有两个怀疑:
工程设置不对。
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,如下图。
本地搜一下10.0.18362.0,看看本地是否存在相关的路径。
本地也存在相关路径。能想到的可以怀疑的地方都排除了。接下来请出我们的老朋友 —— process monitor 。
深入调查
打开 process monitor,开启监视,在 vs 中开始编译,问题重现后,停止监视。
下面就要进行最重要的步骤了—— 过滤。
使用 process monitor 快速解决问题的关键在于过滤出与问题有关的事件!
我们需要根据什么条件过滤呢?
一般操作结果是成功的事件对我们帮助不大,所以首先过滤掉 Result 是 SUCCESS 的事件。
既然提示的是找不到 10.0.18362.0 版本的
VS2019 编译错误排查:SDK 版本丢失解决方案

本文记录了一位网友在VS2019中遇到编译错误,提示找不到特定版本的Windows SDK。经过排查,发现是缺少相应文件导致。通过检查工程属性、本地路径及使用Process Monitor定位问题,最终找到问题根源——文件被重命名。恢复文件名称后,编译问题得到解决。文章强调了自我排查和“橡皮鸭调试法”的重要性。
最低0.47元/天 解锁文章
2186

被折叠的 条评论
为什么被折叠?



