“C: \ Microsoft.Cpp.Default.props” не знайдено


82

У мене є проект, створений у Visual Studio, 2013.

Файл проекту має такі властивості:

ToolsVersion = "12.0", PlatformToolset = v120.

У мене встановлені Visual Studio 2013 та Microsoft Build Tools 2015. Цей проект успішно будується за допомогою MSBuild 12.0. При спробі побудувати його за допомогою MSBuild 14.0 я отримую повідомлення про помилку

MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the <Import> declaration is correct, and that the file exists on disk. 

Наскільки я розумію, проблема в тому, що змінна VCTargetsPath не отримує обчислення. Якщо я вказав змінну VCTargetsPath перед збіркою (зі значенням C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120), проблема вирішена.

Однак такий підхід не дуже зручний, якщо шлях відрізняється. Чи можна якось вирішити проблему більш оптимальним способом?

Ключ реєстру та його значення:

HKLM\Software\WOW6432Node\Microsoft\MSBuild\ToolsVersions\12.0\VCTargetsPath $([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))

Після спроби побудувати його за допомогою MSBuild 14.0, як саме ви це робите? Ймовірно, вам слід спершу зателефонувати vcvars.bat (або еквівалент для інструментів побудови 2015) ..
— stijn

Погодьтеся зі stijn, встановіть змінну шляху та середовища для збірок командного рядка через vcvars.bat і перевірте, чи він працює для вас. Для отримання додаткової інформації про встановлення змінних шляху та середовища для збірок
— Zhanglong Wu - MSFT

Відповіді:


60

На вирішення цієї проблеми у мене пішло дві години, але я нарешті закінчив.

Наступне вирішило мою проблему:

  1. Запустіть це в командному рядку з підвищеними можливостями (адміністратор): npm install --global --production windows-build-tools . Якщо у вас немає npm, я рекомендую встановити його, інакше це не спрацює.
  2. Змініть власника в директорії встановлення (у моєму випадку C:\Program Files (x86)\MSBuild\14.0) на вашого користувача, а не на адміністратора. (властивості> Безпека> Додатково).

9
Дякую. Мені просто потрібно було (повторно) бігти npm install -g --production windows-build-tools.
— Ден Еткінсон,

@Nic Szer, ти можеш пояснити мені другий крок? Я не можу це зрозуміти.
— HarshitMadhav

@NicSzer у моєму випадку я бачу Власника: СИСТЕМА, що мені робити?
— HarshitMadhav

@HarshitAgrawal потрібно змінити, кому належить папка, таким чином, що власником є ​​ваш користувач, а не СИСТЕМА
— Nic Szerman,

@NicSzer дякую за відповідь. Я зробив це, але зараз отримую нові помилки. Це моя перша спроба запустити рідний проект реагування на Windows. Мені потрібна допомога. Чи можемо ми підключитися до чату stackoverflow?
— HarshitMadhav

32

Нещодавно я переінсталював Visual studio 2017 і зіткнувся з цією проблемою під час спроби встановити "npm java". Виправлення для мене:

  1. встановити версію ms на 2017 рік: npm config set msvs_version 2017
  2. встановити змінну середовища VCTargetsPath на C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
  3. запустити командну консоль як системний адміністратор

3
npm config set msvs_version 2017цей код врятував мої години. Дякую.
— canmustu

@Alex ваш VCTargetsкаталог уже містив Microsoft.Cpp.Default.Props? У мене є каталог, але цей файл відсутній.
— starscream_disco_party

@starscream_disco_party так, Microsoft.Cpp.Default.Props вже в моїй папці VCTargets
— Олексій

23

Ці кроки вирішили мою проблему:

  1. Біжи npm install --global --production windows-build-tools
  2. Біжи npm install --save nan
  3. Встановіть VCTargetsPathзмінну середовища наC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140

2
де знаходиться VCTargetsPath?
— HarshitMadhav

Ідеальне рішення
— Хаммад уль Хасан,

1
@HarshitAgrawal VCTargetsPath- це назва змінної середовища.
— Емре Тапчі

Третій крок потрібен лише в моєму випадку.
— Сергій

10

Для тих, хто наведена вище відповідь не працює, ось ще одне можливе рішення.

Навіть установка інструментів для побудови або VS 2015 для мене не спрацювала. Тому я спробував встановити нижче безпосередньо через PowerShell (як адміністратор)

https://chocolatey.org/packages/visualcpp-build-tools/14.0.25420.1 Команда: choco встановити visualcpp-build-tools --version 14.0.25420.1

Після встановлення встановіть змінну середовища VCTargetsPath = C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ v140


Використання Chocolatey це вирішило для мене, я навіть не встановив змінну середовища, це вийшло нестандартно
— Meir Gabay

9

Для тих, хто використовує VS 2019:

встановити VCTargetsPath = "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Microsoft \ VC \ v160"

Редагувати (вересень 2020 р.): Іноді для цього потрібна зворотна коса риса (як зазначено нижче у bmiller)


1
Це спрацювало для мене. Зверніть увагу, що мені також потрібна зворотна коса риса на шляху, інакше збірка не вдалася, шукаючи конкретні реквізити платформи в підпапці.
— bmiller 02

1
Працював і для мене, хоча вам потрібно переконатися, що ви вказали правильну версію VS (у моєму випадку це була спільнота - "C: \ Program Files (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VC \ v160 "
— g0rski

5

Я вирішив це за допомогою:

  1. Встановіть VCTargetsPathзмінну середовища наC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
  2. побудувати за допомогою адміністратора

1

Я не міг змусити це працювати з усіма пропозиціями на цій сторінці

Я знизив nodejs до 10.15, і він працював нормально

мабуть, не найкраща відповідь, але вона працює


0

Я спробував встановити npm та VCTargetsPath, все не працює. Остаточно вирішено після нього після оновлення Visual Studio до останньої версії.


0

Вирішено шляхом встановлення Visual Studio Express 2015 для Windows 10 .


Перехід від Express до Pro спричинив проблему в моєму випадку. Встановіть змінну середовища VCTargetsPath на C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140
— Сергій

0

Я вирішив проблему, завантаживши рішення у VS 2019, замість того, щоб двічі клацнути ім'я рішення у Провіднику файлів.


0

Під час запуску MSBuild за межами Visual Studio 2019 (перенесено з 2012 року) у мене виникли такі проблеми. Я вирішив їх запустити цей MSBuild:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild"

(налаштуйте його на основі вашої версії VS та цільової архітектури) замість цієї:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild

що я використовував, коли мав Visual Studio 2012.


-1

Обов’язково використовуйте --global з командою, щоб мати можливість використовувати цей пакет де завгодно. Це вирішує проблему для мене

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.