答案 0 :(得分:5)
我在文件夹sdk.props
C:\Program Files (x86)\Windows Kits\8.0\build\CommonConfiguration\Neutral
中的数据
<PropertyGroup>
<WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))</WindowsSdkDir>
</PropertyGroup>
<PropertyGroup> <WindowsSDK_IncludePath>$(WindowsSdkDir)Include\um;$(WindowsSdkDir)Include\shared;$(WindowsSdkDir)Include\winrt;</WindowsSDK_IncludePath>
</PropertyGroup>
我使用的是Win8 + VS2012,所以它应该在VS2013 + 8.1 SDK的8.1文件夹中。
答案 1 :(得分:5)
就我而言,WindowsSDK_IncludePath
变量已正确定义,实际上它在Visual Studio 2013中运行良好。所以我甚至卸载并重新安装了VS2015。然后我感谢this link,可以通过特定的用户设置修改预设的宏变量。这些用户设置存储在C:\Users\<user>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props
中,在我的例子中如下所示:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
<IncludePath>$(VC_IncludePath);$(WindowsSDK_IncludePath);C:\Program Files (x86)\CodeSynthesis XSD 4.0\include;</IncludePath>
<LibraryPath>$(VC_LibraryPath_x86);$(WindowsSDK_LibraryPath_x86);C:\Program Files (x86)\CodeSynthesis XSD 4.0\lib\vc-12.0;</LibraryPath>
<ExecutablePath>C:\Program Files (x86)\CodeSynthesis XSD 4.0\bin;$(VC_ExecutablePath_x86);$(WindowsSDK_ExecutablePath);$(VS_ExecutablePath);$(MSBuild_ExecutablePath);$(SystemRoot)\SysWow64;$(FxCopDir);$(PATH);</ExecutablePath>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup />
</Project>
不知何故,<IncludePath>
句使VS2015无法找到正确的值。在我的笔记本电脑中,一切正常,文件基本上是空的:
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ImportGroup Label="PropertySheets">
</ImportGroup>
<PropertyGroup Label="UserMacros" />
<PropertyGroup>
</PropertyGroup>
<ItemDefinitionGroup />
<ItemGroup />
</Project>
设置我的文件就像笔记本电脑中的文件一样,一切正常。当然我丢失了CodeSynthesis XSD的执行偏好,但是现在我没有处理任何使用它的项目。我将继续尝试使用此文件的不同变体。
答案 2 :(得分:3)
对我来说,文件Microsoft.Cpp.Common.props
中的文件为C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
,我必须将硬编码的Windows 10 SDK版本从10.0.10240.0更改为10.0.10586.0。
<!-- 10.0.10240.0 is the hardcoded checked-in version of uCRT that we use in case we target 8.1 SDK -->
<TargetUniversalCRTVersion Condition="'$(TargetUniversalCRTVersion)' == '' and ('$(TargetPlatformVersion)' == '8.1' or '$(DefineWindowsSDK_71A)' == 'true')">10.0.10586.0</TargetUniversalCRTVersion>
我在Windows 10上使用VS2015,因为缺少包含文件而无法针对Windows 8.1 SDK进行编译。安装独立的Windows 10 SDK也没有帮助(因为它不包含10.0.10240的ucrt文件,如ctype.h a.s.o。)。
答案 3 :(得分:1)
在C:\ Program Files(x86)\ Windows Kits \
中搜索* .props在我的情况下,导致问题的文件是UAP.props。编辑文件并将4.7.1更改为4.6.1解决了这个问题。
<PropertyGroup>
<WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))\</WindowsSdkDir>
<DotNetSdkRoot Condition="'$(DotNetSdkRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\4.7.1@KitsInstallationFolder)</DotNetSdkRoot>
<DotNetSdkRoot Condition="'$(DotNetSdkRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\NETFXSDK\4.7.1@KitsInstallationFolder)</DotNetSdkRoot>
</PropertyGroup>