web-dev-qa-db-fra.com

Variable de registre Windows SDK introuvable

Je ne peux pas construire mon projet dans Visual Studio 2012. L'erreur est:

1> C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets (344,5): avertissement MSB8003: impossible de trouver la variable WindowsSDKDir dans le registre. TargetFrameworkVersion ou PlatformToolset peuvent être définis sur un numéro de version non valide. "

J'ai installé Windows SDK, et j'ai essayé de réinstaller et de réparer, et j'ai même essayé d'entrer la clé de chaîne de registre "WindowsSDKDir" dans le registre. (HKLM/SOFTWARE/Wow6432Node/SDK Microsoft/Microsoft/v7.1 avec la valeur C:\Program Files\SDK Microsoft\Windows\v7.1). »

Est-ce un problème de registre ou autre chose? J'ai essayé de rechercher ces clés de registre et de réinstaller mon SDK Windows, mais cela ne m'a pas aidé.

21
clashoftornados

J'essayais de compiler un script pour Script Hook V - GTA .NET Library.

J'ai passé environ 2 heures à essayer de comprendre pourquoi cela ne fonctionnerait pas. Voici comment je l'ai construit:

J'ai fait un clic droit sur le projet et les propriétés sélectionnées:

Step1

Sous Propriétés de configuration -> Général -> Plate-forme, Outils

J'ai sélectionné le menu déroulant et sélectionné le seul autre disponible

(Pour moi, c'était Visual Studio 2013 - Windows XP (v120_xp))

Platform Toolset

Après cela, j'ai pu piloter ma voiture normalement:

Weeee

J'espère que cela aidera quelqu'un d'autre à essayer de faire la même chose.

12
user1274820

J'ai eu le même problème avec Visual Studio 2013 (aucun Service Pack installé). Apparemment, lors de l'installation, une connexion Internet active est nécessaire ou le sdk-path est peut-être manquant. 

Allez simplement dans votre panneau de configuration/programmes/programmes et fonctionnalités - et sélectionnez "Microsoft Visual Studio xxx 2013", cliquez avec le bouton droit de la souris sur "Modifier", puis "réparer". Cela prendra quelques minutes, mais ensuite sdk-path est correct.

10
kalmiya

J'ai eu ce problème récemment en essayant d'installer certains paquets Node.js! Je enfin _ corrigé en ajoutant le chemin correct à la variable de registre!

Le moyen le plus simple de résoudre ce problème consiste à le définir à l'aide d'un script simple.

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows]
"CurrentInstallFolder"="C:\\Program Files (x86)\\Windows Kits\\8.1\\"

Cela devrait résoudre le problème pour tous les utilisateurs Windows 8.1 64 bits, mais si votre SDK Windows est installé dans un autre répertoire, remplacez simplement C:\Program Files (x86)\Windows Kits\8.1 par votre répertoire respectif. Voici quelques endroits que vous pouvez essayer:

  • C:\Program Files (x86)\Kits Windows
  • C:\Program Files (x86)\Microsoft SDK\Windows
  • C:\Program Files (x86)\Microsoft\Microsoft SDK\Windows

Remarque: veillez à bien ajouter la version à la fin du chemin. Par exemple, 8.1 est à la fin de mon chemin. En gros, vous devez obtenir le chemin d'accès complet au SDK Windows et non uniquement le dossier contenant le ou les dossiers principaux du SDK Windows.

9
CoolOppo

Comme l'a souligné Parvez, Nouveau projet C++, puis "Installer le support Windows XP pour C++"

 enter image description here

4
osexp2003

Essayez d’appeler SetEnv.cmd manuellement dans votre invite de commande:

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x86

OR

call "C:\Program Files\Microsoft SDKs\Windows\v7.1\bin\Setenv.cmd" /Release /x64
3
Ruslan

L'installation de Windows SDK v8.1 l'a résolu pour moi.

2
James Vespa

Pour moi, cela fonctionne:

Vérifiez la valeur dans "votre" .vcxproj <PlatformToolset>"some version"</PlatformToolset>

Je sais que c'est étrange mais:

J'ai installé VC2012 et VC2010 et je compile le projet de 2012 à 2010 avec le jeu d'outils "v110". 

2
Lesanus

J'obtenais l'erreur mentionnée ci-dessous lorsque j'essayais d'installer le pilote Oracle pour nodejs à l'aide de npm install oracledb. J'ai Windows 7.1 SP1 et j'ai installé Visual Studio 2015 Community Edition.

C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets (366,5): avertissement MSB8003: Impossible de trouver la variable WindowsSDKDir dans le fichier enregistrement. TargetFrameworkVersion ou PlatformToolset peuvent être définis sur un numéro de version invalide.

L'installation du compilateur VC++ comme mentionné ici a résolu le problème pour moi. Pour référence, voici l'action à faire.

Vous devez lancer Visual Studio, puis faire: fichier> nouveau> projet, dans Dans la fenêtre qui s’est ouverte, sélectionnez "Modèle> Visual C++" et au milieu de la fenêtre, vous devriez voir un bouton "installer Microsoft C++" ou quelque chose comme ça, cliquez dessus et il lancera l’installation processus pour le SDK C++ et Microsoft. Une fois que cela est fait, cela fonctionnera comme attendu!

1
Parvez

J'ai eu le même problème avec VS2012. J'avais à la fois 2013 et 2012 installés sur ma machine et je rencontrais le problème après la désinstallation de VS2013 (que je n'utilisais plus en raison de l'expiration de la licence).

Les clés de registre liées ci-dessus ne m'ont pas aidé. A mon avis, indépendamment de votre version de VS, le moyen le plus sûr de résoudre ce problème consiste à localiser le fichier de commandes que VS utilise pour charger ces macros, ce qui semble être VCVarsQueryRegistry.bat in C:\Program Files (x86 )\Microsoft Visual Studio [VOTRE_VERSION] .0\Common7\Tools .

Recherchez la variable VS qui dit qu’elle n’est pas définie. Vous pourriez alors trouver un extrait tel que:

@set WindowsSdkDir=
@call :GetWindowsSdkDirHelper32 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper32 HKCU > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKLM > nul 2>&1
@if errorlevel 1 call :GetWindowsSdkDirHelper64 HKCU > nul 2>&1
@exit /B 0

:GetWindowsSdkDirHelper32
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)
@if "%WindowsSdkDir%"=="" exit /B 1
@exit /B 0

:GetWindowsSdkDirHelper64
@for /F "tokens=1,2*" %%i in ('reg query "%1\SOFTWARE\Wow6432Node\Microsoft\Microsoft SDKs\Windows\v8.0" /v "InstallationFolder"') DO (
    @if "%%i"=="InstallationFolder" (
        @SET "WindowsSdkDir=%%k"
    )
)

Cela indique clairement que WindowsSdkDir dans un système 64 bits est défini par la valeur du registre SOFTWARE\Wow6432Node\Microsoft\Microsoft SDK\Windows\v8.0\InstallationFolder dans HKEY_CURRENT_USER ou HKEY_LOCAL_MACHINE selon votre choix. configuration.

1
Neenster

Je faisais également face au même problème.

L'installation de Windows SDK v8.1 l'a résolu pour moi.

https://msdn.Microsoft.com/en-us/windows/desktop/bg162891.aspx

1
Pawan Agrawal

Ajout de mes observations d'un problème similaire signalant la même erreur ....

Si les SDK requis sont installés, mais que le problème persiste, essayez de basculer le Platform Toolset sous les propriétés de configuration du projet General. Par exemple, j'ai changé Visual Studio 2013 (v120) en Visual Studio 2015 (v140) . Après l'application, j'ai retourné le Platform Toolset vers Visual Studio 2013 (v120) qui corrigeait le problème du paramètre manquant WindowsSDKDir

VS2012 est installé sur un autre poste de travail sur lequel le projet fonctionne. Le nouveau poste de travail sans VS2012 se plaint du paramètre manquant WindowsSDKDir; bien que le paramètre Platform Toolset affiche Visual Studio 2013 (v120)

0
bvj