在我的 Windows 7 计算机上,我同时拥有 Windows SDK(10.0.14393.795) 和 WDK(10.0.14393.0) 版本,但是,当我在 Visual Studio 2015 中构建项目时,它一直显示
MSB8036 找不到 Windows SDK 版本 10.0.14393.0。安装所需版本的 Windows SDK 或在项目属性页中更改 SDK 版本,或者右键单击解决方案并选择“重新定位解决方案”。
当我重新定位解决方案时,我拥有的选项是 10.0.10240 和 8.1,但不是 10.0.14393。
我怎样才能建立这种正确性?
运行下面列出的小批处理文件。它调用另一个批处理文件
winsdk.bat
,该文件由 Microsoft 编写,是 Visual Studio 安装的一部分,是 Visual Studio 用于检测和选择已安装 SDK 的“官方方式”。
每个版本的 Visual Studio 使用不同的
winsdk.bat
,但 VS2015 之后它们彼此非常相似。
如果您研究这个 Microsoft 批处理文件的工作方式,您会发现为什么它没有检测到您的 SDK。 TL;DR:它混合使用注册表和文件系统解析。
@echo off
REM If you don't have it installed already, you can download VSWHERE.EXE from https://github.com/microsoft/vswhere
for /f "usebackq tokens=*" %%i in (`"%ProgramFiles(x86)%\Microsoft Visual Studio\Installer\vswhere.exe" -latest -legacy -property resolvedInstallationPath`) do (
set VSinstallDir=%%i
)
echo The latest Visual Studio is installed in: %VSinstallDir%
set VSCMD_ARG_HOST_ARCH=x64
set VSCMD_ARG_TGT_ARCH=x64
REM This call actually does the job of detecting the SDKs that you have installed on your system and picks the default one.
call %VSinstallDir%\Common7\Tools\vsdevcmd\core\winsdk.bat
echo WindowsSDKVersion=%WindowsSDKVersion%
echo WindowsSDKLibVersion=%WindowsSDKLibVersion%
echo UCRTVersion=%UCRTVersion%
echo WindowsSdkDir=%WindowsSdkDir%
echo UniversalCRTSdkDir=%UniversalCRTSdkDir%
echo WindowsSdkBinPath=%WindowsSdkBinPath%
echo WindowsSdkVerBinPath=%WindowsSdkVerBinPath%
echo WindowsLibPath=%WindowsLibPath%
如果您愿意,您可以将
VSCMD_ARG_HOST_ARCH
和 VSCMD_ARG_TGT_ARCH
变量设置为 =x86
或 =arm
或 =arm64
。
您可以使用
winsdk.bat
工具逐步调试您的 CMDebug
文件,网址为:https://jpsoft.com/all-downloads/all-downloads.html(注意:v25 适用于所有版本的窗户)。如果这样做,请记住使用 set VSCMD_ARG_HOST_ARCH=x64
实用程序内的菜单 set VSCMD_ARG_TGT_ARCH=x64
执行 Debug --> Evaluate Command...
和 CMDebug
命令。