WindowsSDK_ExecutablePath未在VS2015 VC ++变量

时间:2018-03-16 12:12:21

标签: winapi visual-c++ visual-studio-2015

我在网上搜索了很多内容,但我找不到合适的解决方案,只是解决方法。我想知道VS2015或WindowsSDK安装是否已损坏。

这是事情: 我得到问题构建(在链接阶段),VS环境报告无法找到资源编译可执行文件(rc.exe)

TRACKER : error TRK0005: Failed to locate: "rc.exe". The system cannot find the file specified.

我在我的机器上搜索并找到了二进制文件:

C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\x64

因此,快速的解决方法是将该路径添加到PATH,一切正常。但我并不高兴,因为我确信Windows SDK安装程序(或VS)应该很好地处理这个问题。

如果我查看VS IDE - >项目 - >属性 - >配置属性 - > VC ++目录并查看"可执行目录"我期待在那里找到正确的道路。所以我通过打开MACRO(右下角)并过滤WindowsSDK_ExecutablePath来检查它:我看到了

$(WindowsSDK_ExecutablePath) = C:\Program Files (x86)\Windows Kits\10\bin\x86 $(WindowsSDK_ExecutablePath_arm) = C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\arm $(WindowsSDK_ExecutablePath_arm64) = C:\Program Files (x86)\Windows Kits\10\bin\10.0.16299.0\arm64 $(WindowsSDK_ExecutablePath_x86) = C:\Program Files (x86)\Windows Kits\10\bin\x86 $(WindowsSDK_ExecutablePath_x64) = C:\Program Files (x86)\Windows Kits\10\bin\x64

正如您所看到的,英特尔架构文件夹指向一个通用位置(不是特定于SDK版本),当然这些文件夹没有这些二进制文件。有趣的是,ARM文件夹是正确的。

我正在尝试了解损坏这些文件夹的内容......

我猜它是SDK安装程序,就像位于

中的UAP.props文件一样

$(WindowsSDKDir)/DesignTime/CommonConfiguration/Neutral/UAP/10.0.16299.0/

我可以看到这个

<WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\x86;</WindowsSDK_ExecutablePath_x86> <WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\x64;</WindowsSDK_ExecutablePath_x64>

虽然我不是100%肯定,因为这是安装后的,所以它可能是VS改变它。

有什么想法吗?建议?谁有同样的问题,并设法找到适当的修复而不是解决方法?

1 个答案:

答案 0 :(得分:0)

是的,不确定这是否是正确的,但在此问题上挖掘了一点。我发现的是

中这个奇怪的xml代码块

$(WindowsSDKDir)\DesignTime\CommonConfiguration\Neutral\UAP\10.0.16299.0\UAP.props

看起来像这样:

&#13;
&#13;
<PropertyGroup Condition="'$(VisualStudioVersion)' != '' and '$(VisualStudioVersion)' &lt;= '14.0'">
  <WDKBinRoot>$(WindowsSdkDir)bin</WDKBinRoot>
  <WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\x86;</WindowsSDK_ExecutablePath_x86>
  <WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\x64;</WindowsSDK_ExecutablePath_x64>
</PropertyGroup>
<PropertyGroup Condition="'$(VisualStudioVersion)' == '' or '$(VisualStudioVersion)' &gt; '14.0'">
  <WDKBinRoot>$(WindowsSdkDir)bin\10.0.16299.0</WDKBinRoot>
  <WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\10.0.16299.0\x86;</WindowsSDK_ExecutablePath_x86>
  <WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\10.0.16299.0\x64;</WindowsSDK_ExecutablePath_x64>
</PropertyGroup>
&#13;
&#13;
&#13;

如果我错了,请纠正我,但如果你有VS2015(14.0),似乎没有做任何事情

所以我在那个块后添加了这个:

&#13;
&#13;
<PropertyGroup Condition="'$(VisualStudioVersion)' == '14.0'">
  <WDKBinRoot>$(WindowsSdkDir)bin\10.0.16299.0</WDKBinRoot>
  <WindowsSDK_ExecutablePath_x86>$(WindowsSdkDir)bin\10.0.16299.0\x86;</WindowsSDK_ExecutablePath_x86>
  <WindowsSDK_ExecutablePath_x64>$(WindowsSdkDir)bin\10.0.16299.0\x64;</WindowsSDK_ExecutablePath_x64>
</PropertyGroup>
&#13;
&#13;
&#13;

随着这一改变一切顺利。我想知道为什么这个文件以这种方式填充。如果你看一下它包含arm和desktop.arm道具。我也想知道是否可以创建与此通用UAP.props分开的属性文件。

当然,这只修复了这个特定的SDK版本,您必须为安装的每个版本执行此操作,如果您安装了新版本。