wake-up-neo.com

Wo ist WindowsSDK_IncludePath definiert?

Das Makro $ (WindowsSDK_IncludePath) enthält die im Bild gezeigten Werte.

Ich möchte wissen, wo diese Werte definiert sind. Sie müssen in einigen Dateien definiert werden.

Das Bild wurde aus Visual Studio 2013 aufgenommen.

 enter image description here

14
Marson Mao

Ich sehe die Daten in der Datei sdk.props im Ordner 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>

Ich verwende ein Win8 + VS2012, daher sollte es sich im Ordner 8.1 für Ihr VS2013 + 8.1-SDK befinden.

5
magicandre1981

In meinem Fall wurde die WindowsSDK_IncludePath-Variable korrekt definiert und funktionierte in Visual Studio 2013 einwandfrei. Daher habe ich VS2015 sogar deinstalliert und erneut installiert. Dann habe ich dank diesem Link festgestellt, dass die voreingestellten Makrovariablen durch bestimmte Benutzereinstellungen geändert werden können. Diese Benutzereinstellungen werden in C:\Users\<user>\AppData\Local\Microsoft\MSBuild\v4.0\Microsoft.Cpp.Win32.user.props gespeichert, was in meinem Fall wie folgt lautet:

<?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>

Irgendwie machte es der <IncludePath>-Satz unmöglich, dass VS2015 den korrekten Wert findet. In meinem Laptop, bei dem alles richtig funktioniert hat, war die Datei im Wesentlichen leer:

<?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>

Nachdem ich meine Datei genau wie die in meinem Laptop eingestellt hatte, funktionierte alles normal. Natürlich habe ich die Ausführungspräferenz von CodeSynthesis XSD verloren, aber momentan arbeite ich an keinem Projekt, das sie verwendet. Ich werde weiter mit verschiedenen Varianten dieser Datei experimentieren.

4
malopezmx

Für mich war es die Datei Microsoft.Cpp.Common.props im Ordner C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140, bei der ich die hartcodierte Windows 10 SDK-Version von 10.0.10240.0 auf 10.0.10586.0 ändern musste.

<!-- 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>

Ich verwende VS2015 unter Windows 10 und konnte wegen fehlender Include-Dateien nicht mit Windows 8.1 SDK kompilieren. Die Installation des eigenständigen Windows 10-SDK hat auch nicht geholfen (da es für 10.0.10240 keine Ucrt-Dateien wie ctype.h a.s.o. enthält).

3
JeffRSon

Suchen Sie nach * .props in C:\Programme (x86)\Windows Kits \

In meinem Fall war die Datei, die das Problem verursacht hat, UAP.props. Durch Bearbeiten der Datei und Ändern von 4.7.1 in 4.6.1 wurde das Problem behoben.

<PropertyGroup>
    <WindowsSdkDir Condition="'$(WindowsSdkDir)' == ''">$([MSBUILD]::GetDirectoryNameOfFileAbove('$(MSBUILDTHISFILEDIRECTORY)', 'sdkmanifest.xml'))\</WindowsSdkDir>
    <DotNetSdkRoot Condition="'$(DotNetSdkRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Microsoft SDKs\NETFXSDK\[email protected])</DotNetSdkRoot>
    <DotNetSdkRoot Condition="'$(DotNetSdkRoot)' == ''">$(Registry:HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\NETFXSDK\[email protected])</DotNetSdkRoot>
  </PropertyGroup>
1
Todd