这里有很多答案,但我没有看到这个,我相信这是修复这个 Visual Studio 错误的正确方法。我最近不得不在已经拥有 Visual Studio 2017 和 2019 以及多个版本的 Windows SDK 的系统上安装 Visual Studio 2015。在构建 x86 或 x64/debug 或发布时,它找不到 RC.EXE。原因是项目的可执行路径($(VS_ExecutablePath))值不正确。对于 x86 和 x64,它设置为
C:\Program Files (x86)\Windows Kits\10\bin\x86
C:\Program Files (x86)\Windows Kits\10\bin\x64
如果 10 被 8.1 替换,这似乎是正确的,但我想使用 Windows 10 SDK 而不是 Windows 8.1 SDK。
Windows 10 SDK 可执行文件实际上位于这些目录中(即这些是我现在安装的 SDK):
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.15063.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.17763.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\arm64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x64\rc.exe
C:\Program Files (x86)\Windows Kits\10\bin\10.0.18362.0\x86\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x64\rc.exe
C:\Program Files (x86)\Windows Kits\8.1\bin\x86\rc.exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\RC.Exe
C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin\x64\RC.Exe
在 Windows 10 SDK 中,TargetPlatformVersion 是路径的一部分,它允许在每个新的 TargetPlatform 发布时更新 SDK 可执行文件/include/libs。
选择一个RC.EXE 并将其复制到路径中的一个目录会起作用,但每个TargetPlatformVersion SDK 目录都有一个不同的RC.EXE,因此您可能不知道您正在使用哪个 - 特别是如果您有多个开发人员和构建机器。最好在项目中修复它。
要解决这个问题,
- 使用 Shift-Click 选择所有受影响的项目
- 右键单击选定的项目并选择属性,
- 选择左侧的 VC++ 目录
- 选择可执行目录
- 点击最右侧的下拉菜单并选择编辑。
双击顶部的空白行,对于 x86/win32 项目,将其添加到调试和发布配置中:
$(WindowsSdkDir)bin\$(TargetPlatformVersion)\x86\
对于 x64 项目,将其添加到调试和发布配置中:
$(WindowsSdkDir)bin\$(TargetPlatformVersion)\x64\
选中“从父级或项目默认值继承”。 “评估值”窗口可能会出现乱码,但在您保存并关闭属性页后,它似乎会得到修复。
我不必更新“库目录”或“包含目录”,但它们可能需要进行类似的更改。
这将在每个 Visual Studio 项目文件中创建多个条目,如下所示:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ExecutablePath>$(WindowsSdkDir_10)bin\$(TargetPlatformVersion)\x86\;$(ExecutablePath)</ExecutablePath>
</PropertyGroup>
解决此问题的正确方法是编辑 Microsoft.Cpp.Win32.user 的属性表或定义您自己的属性表以将此值添加到继承的值中,但 Visual Studio 2015 属性管理器似乎有问题(2017/2019好多了)所以我发现最好将价值直接放入项目中。这也意味着,只要安装了所选的 Windows 10 SDK,使用这些项目的所有其他开发人员或构建机器都可以进行构建。