There are a lot of answers here, but I didn't see this one, which I believe is the right way to fix this Visual Studio bug. I recently had to install Visual Studio 2015 on a system that already had Visual Studio 2017 and 2019 along with multiple versions of the Windows SDK. When building either x86 or x64/debug or release, it could not find RC.EXE. The reason is that the Project's executable path (the $(VS_ExecutablePath)
) value is incorrect. For x86 and x64, it's set to
C:\Program Files (x86)\Windows Kits\10\bin\x86
C:\Program Files (x86)\Windows Kits\10\bin\x64
which appears to be correct if 10
is replaced by 8.1
but I want to use the Windows 10 SDK not the Windows 8.1 SDK.
The Windows 10 SDK executables are actually in these directories (i.e. these are the SDKs I have installed right now):
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
In Windows 10 SDKs, the TargetPlatformVersion
is part of the path, which allows the SDK executables/include/libs to be updated for each new TargetPlatform
as it's released.
Choosing an RC.EXE
and copying it to a directory in the path would work but each TargetPlatformVersion
SDK directory has a different RC.EXE
, so you might not know which one you are using -- especially if you have multiple developers and build machines. It's best to fix it in the projects.
To fix this,
- Select all of the affected projects with Shift-Click
- Right-click a selected project and select Properties,
- Select VC++ Directories on the left
- Select Executable Directories
- Click the pull-down at the far right and select Edit.
Double-click the top blank line and for x86/win32 projects, add this to both Debug and Release configurations:
$(WindowsSdkDir)bin\$(TargetPlatformVersion)\x86\
For x64 projects, add this to both Debug and Release configurations:
$(WindowsSdkDir)bin\$(TargetPlatformVersion)\x64\
Leave "Inherit from parent or project defaults" checked. The "Evaluated Value" window may appear garbled but it seems to get fixed once you save and close the property pages.
I did not have to update "Library Directories" nor "Include Directories" but they might require similar changes.
This will make a number of entries in each Visual Studio project file that look like this:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|Win32'">
<ExecutablePath>$(WindowsSdkDir_10)bin\$(TargetPlatformVersion)\x86\;$(ExecutablePath)</ExecutablePath>
</PropertyGroup>
The right way to fix this is by editing the property sheet for Microsoft.Cpp.Win32.user
or to define your own property sheet to add this value to the inherited values, but the Visual Studio 2015 property manager seems to be buggy (2017/2019 is much better) so I found it best to just put the value directly into the projects. This also means every other developer or build machine that uses these projects will be able to build, as long as the chosen Windows 10 SDK is installed.