Подтвердить что ты не робот

Ошибка реестра Windows SDK не найдена

Я не могу создать свой проект в Visual Studio 2012. Ошибка:

1 > C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V110\Microsoft.CppBuild.targets(344,5): предупреждение MSB8003: Не удалось найти переменную WindowsSDKDir из реестра.  TargetFrameworkVersion или PlatformToolset могут быть установлены на недопустимый номер версии. "

Я установил Windows SDK и попытался переустановить и восстановить, и даже попытался ввести ключ реестра WindowsSDKDir в реестр. (HKLM/SOFTWARE/Wow6432Node/Microsoft/Microsoft SDK/v7.1 со значением C:\Program Files\Microsoft SDK\Windows\v7.1).

Это проблема с реестром или что-то еще? Я попытался найти эти ключи реестра и переустановить мой Windows SDK, но не помог.

4b9b3361

Ответ 1

Я пытался получить script для компиляции для script Hook V - библиотеки GTA.NET.

Я потратил около 2 часов, пытаясь понять, почему это не сработает. Вот как я его создал:

Я щелкнул правой кнопкой мыши по проекту и выбранным свойствам:

Step1

В разделе Свойства конфигурации → Общие → Набор инструментов для платформы

Я выбрал раскрывающийся список и выбрал только один доступный

(Для меня это была Visual Studio 2013 - Windows XP (v120_xp))

Platform Toolset

После этого я смог нормально летать на своем автомобиле:

Weeee

Надеюсь, что это поможет кому-то другому попытаться сделать то же самое.

Ответ 2

У меня была такая же проблема с Visual Studio 2013 (никаких пакетов Service-pack не установлены). По-видимому, во время установки ему требуется активное подключение к Интернету или может отсутствовать путь sdk.

Просто зайдите в свою панель управления/программы/программы и функции - и выберите "Microsoft Visual Studio xxx 2013", щелкните правой кнопкой мыши и измените "затем". Это займет несколько минут, но потом путь sdk правильный.

Ответ 3

У меня возникла эта проблема в последнее время при попытке установить определенные пакеты Node.js! Я наконец исправил его, добавив правильный путь к переменной реестра!

Самый простой способ исправить это - установить его с помощью простого script.

Windows Registry Editor Version 5.00

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

Это должно исправить это для любых 64-разрядных пользователей Windows 8.1, но если у вас установлен Windows SDK в другом каталоге, просто замените C:\Program Files (x86)\Windows Kits\8.1 на соответствующий каталог. Вот несколько мест, которые вы можете попробовать:

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

Примечание. Обязательно добавьте версию и до конца пути; например, 8.1 находится в конце моего пути. В принципе, вам нужно получить полный путь к SDK Windows и не только папку, содержащую основные папки для SDK Windows.

Ответ 4

Как отметил Парвез, проект New С++, затем "Установить поддержку Windows XP для С++"

введите описание изображения здесь

Ответ 5

Попробуйте вызвать SetEnv.cmd вручную в командной строке:

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

ИЛИ

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

Ответ 6

Установка Windows SDK v8.1 решила его для меня.

Ответ 7


Для меня это работает:

Проверьте значение в "вашем".vcxproj <PlatformToolset>"some version"</PlatformToolset>

Я знаю, что это странно, но:

Я установил VC2012 и VC2010, и я скомпилирую проект с 2012 года в 2010 году с помощью набора инструментов "v110".

Ответ 8

Я получил ошибку, упомянутую ниже, когда я пытался установить драйвер oracle для nodejs, используя npm install oracledb. У меня есть Windows 7.1 SP1, и я установил версию сообщества Visual Studio 2015.

C:\Program Files (X86)\MSBuild\Microsoft.Cpp\v4.0\V140\Microsoft.CppBuild.targets(366,5): предупреждение MSB8003: Не удалось найти переменную WindowsSDKDir из реестр. TargetFrameworkVersion или PlatformToolset могут быть установлены на неверный номер версии.

Установка компилятора VС++, как упомянуто здесь, разрешила проблему для меня. Для справки - это действие.

Вам нужно запустить Visual studio, затем выполните: file > new > project, in в открывшемся окне выберите "Модель > Visual С++" и в середине окна вы должны увидеть кнопку "установить microsoft С++" или что-то вроде этого, щелкните по нему, и он запустит установку процесс для С++ и Microsoft SDK. После этого он будет работать как ожидаемый!

Ответ 9

У меня была такая же проблема с VS2012. У меня были установлены как 2013, так и 2012 года на моей машине и возникла проблема после удаления VS2013 (который я больше не использовал из-за истекшей лицензии).

Связанные выше ключи реестра не помогли мне. На мой взгляд, независимо от вашей версии VS, самый безопасный способ решить эту проблему - найти командный файл VS, используемый для загрузки этих макросов, который, кажется, является VCVarsQueryRegistry.bat в C:\Program Files (x86)\Microsoft Visual Studio [ YOUR_VERSION].0\Common7\Tools.

Ищите переменную VS, которая указывает, что она не определена. Затем вы можете найти фрагмент, например:

@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"
    )
)

Из чего видно, что WindowsSdkDir в 64-битной системе задается значением реестра SOFTWARE\Wow6432Node\Microsoft\Microsoft SDK\Windows\v8.0\InstallationFolder в HKEY_CURRENT_USER или HKEY_LOCAL_MACHINE в зависимости от вашей конфигурации.