Чому MSBuild шукає C: \ для Microsoft.Cpp.Default.props замість c: \ Program Files (x86) \ MSBuild? (помилка MSB4019)


124

Коли я запускаю msbuild для створення проекту vc2010, я отримую таку помилку:

error 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.
  • msbuild розміщений c: \ програмний файл (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath встановлено на $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
  • при запуску msbuild / verbosity: diag як хороша система показує MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath, встановлений як середовище на початку збирання
  • встановлення MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath, встановлене як змінні середовища в оболонці, не призводить до того, що вони відображаються як середовище на початку створення

Спроби виправлень

  • Видалено .net 4.5, відремонтовано .net 4.0
  • Встановіть MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath в системних змінних.

Здається, що MSBuildExtensionsPath32 не встановлений належним чином, а встановлення MSBuildExtensionsPath не допомагає

SET MSBuildExtensionsPath="C:\Program Files\MSBuild"

Будь ласка, дайте мені знати, чи є у вас ідеї, що блокує правильне налаштування цієї змінної.


6
Чудово! Ще одне питання про помилку внаслідок пошкодженої установки Visual Studio із сотнями обхідних шляхів, які працюють лише у декількох сценаріях ...
Florian Winter

Відповіді:


75

Цю проблему я отримав, коли публікував додаток cocos2d-x за допомогою інструменту їх командного рядка, який викликає MSBuild. Я використовую Win 7 64-розрядну версію VS2013 express, cocos2d-x версії 3.3, встановлено .NET Framework 4.5.

Я вирішив проблему, встановивши наступне перед запуском команди cocos.py публікувати:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120

Це допомогло мені встановити пакет вузлів oracledb. Я дотримувався вказівок на community.oracle.com/docs/DOC-931127 і навіть тому отримав помилку MSB4019, яку я виправив за допомогою цієї відповіді.
Педро Отеро

1
Версія PowerShell:[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
фіат

Допоможений шлях закінчився 'v4.0'
Олександр

50

Для тих, хто не дотримувався передбаченого MS порядку (див . Відповідь Xv ), ви все ще можете вирішити проблему.

MSBuild використовує VCTargetsPathдля пошуку властивостей cpp за замовчуванням, але не може, оскільки реєстру не вистачає цього значення рядка.

Перевірте значення рядка

  • Запустити regedit
  • Навігатор до HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Огляньте VCTargetsPathключ. Значення повинно = " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Виправити

  • Запустіть regedit Navigator в HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Додати значення рядка VCTargetsPath
  • Встановити значення " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Примітка: HKLMрозшифровується як HKEY_LOCAL_MACHINE.


12
Запис у реєстр був для мене вже там. Мені довелося визначити змінну середовища з цим іменем, встановленим значенням у реєстрі, щоб подолати це:set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
elmotec

12
для мене це працює лише з цим наборомVCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
ygaradon

1
@ cmm-користувач HKLM означає, що HKEY_LOCAL_MACHINEви, безумовно, повинні мати це в regedit
Майкл Джонстон

4
VCTargetsPath - це не ключ, а значення рядка!
Джон Сміт

5
Для мене це було заразset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
Даніель Грей

26

У мене була та сама проблема останнім часом, і після встановлення різних пакетів у різному порядку вона просто стає безладним. Тоді я знайшов це репо - https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

Він встановлює інструменти Python & VS Build, необхідні для компіляції більшості модулів вузлів. Це спрацювало частування!


1
Добре, але, на жаль, не працює для Azure.
Олексій Концевич

6
Для тих, хто може мати проблеми, як я. Мені потрібен був --productionваріант. npm install --global --production windows-build-tools Відповідно до інструкції з установки node- gyp
eliotRosewater

15

Для Visual Studio 2017 та 2019 на Windows 10

Тут багато відповідей стосується старих версій Visual Studio. Що працювало для мене, якщо використовували версію спільноти Visual Studio 2017, встановлював змінну середовища, яку називали VCTargetsPathта надав їй значення

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets

Якщо використовується версія спільноти Visual Studio 2019,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160

Інші відповіді тут встановлюють цю змінну, c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140але я помітив, що в моїй візуальній установці студії не було папки під назвою Microsoft.Cpp в моїй папці MSBuild. Тож пам’ятайте про це, а також про те, що вищевказаний шлях призначений для версії спільноти Visual Studio 2017.

Також переконайтеся, що ваш шлях MSBuild у змінних оточення вказує на правильну версію MSBuild, якщо ви використовуєте версію спільноти Visual Studio 2017,

C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\MSBuild\15.0\Bin

Якщо ви використовуєте версію спільноти Visual Studio 2019,

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

1
У моєму VCTargetPath був C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ Common7 \ IDE \ VC \ VCTargets
Pradeep

1
Це також можуть бути Microsoft Visual Studio\2019\BuildToolsабо подібні варіанти - і я вважаю, що замість BuildTools та Community ви також можете мати Professional та Enterprise. vswhere.exe -products * -property installationPathбуде шукати всі комбінації та повертати місця всіх встановлених продуктів.
MSalters

1
'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Андрій Костер

13

Встановлення оновлення компілятора Microsoft Visual C ++ 2010 оновленого пакета оновлень 1 для Windows SDK 7.1 виправленоMSB4019 помилки, які я будував у Windows7 x64.

У readme цього оновлення вказується, що рекомендоване замовлення є

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Оновлення компілятора Visual C ++ 2010 SP1 для Windows SDK 7.1

О, добре. Я вигадав виправлення для цього. Додайте до відсутнього ключа реєстру. Я опублікую його та оновлю свої документи налаштування, щоб виконати цей порядок
Пітер Кан

6

У 64-бітних системах MSBuild за замовчуванням застосовує такі властивості (де C: SystemDrive):

MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild

Якщо цього не відбувається, це означає, що у вас є або встановлені деякі власні сторонні цілі заміщення, або ваша установка MSBuild пошкоджена.

Що потрібно спробувати:

  • Ремонт установки .NET
  • Застосувати останній пакет оновлень Visual Studio
  • Встановити MSBuildExtensionsPathвручну, як зазначено вище (зверніть увагу на x86частину на 64-бітних машинах)

2
Дякую, але вони все ще не встановлені після: 1) ремонту .net 4.5, 2) видалення .net 4.5 та ремонту 4.0. Якщо я встановлю їх вручну в оточенні, це теж не працює
Пітер Кан

5

У мене виникла ця проблема у виданні Visual Studio 2015. Коли я використовував cmake для створення проекту, з’явилася помилка.

помилка MSB4019: імпортований проект "D: \ Microsoft.Cpp.Default.props" не знайдено

Я виправив це, додавши рядок

VCTargetsPath

зі значенням

$ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \ V140

в шляху до реєстру

HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 14.0


Зробив це. Після цього перезавантажив cmd, але це не вирішує проблему.
Дан

4

MSBuild - це незалежний інструмент побудови, який часто постачається в комплекті з іншими інструментами. Можливо, він був встановлений на вашому комп’ютері за допомогою .NET (старіші версії), Visual Studio (новіші версії) або навіть Team Foundation Build.

MSBuild потребує файлів конфігурації, компіляторів тощо (ToolSet), які відповідають версії Visual Studio або TFS, яка буде ним користуватися, а також версії .NET, щодо якої буде скомпільовано вихідний код.

Залежно від способу встановлення MSBuild, конфігураційні файли можуть знаходитися в одному або декількох із цих шляхів.

  • C: \ програмні файли (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \
  • C: \ програмні файли (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \
  • C: \ програмні файли (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \

Як описано в інших відповідях, пункт реєстру та / або змінна точка середовища має переходити до шляху ToolSet.

  • Клавіша VCTargetsPath під HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
  • Екологічна змінна VCTargetsPath.

Інколи така операція, як встановлення інструменту, не дозволить неправильно встановити змінну реєстру та / або середовища. Інші відповіді - це всі варіанти їх виправлення.

Єдине, що я мушу додати, це те, що змінна середовища не працювала для мене, коли я вийшов із залишкової системи \


Це! У нашого агента побудови не було проблем з повною установкою VS2017. Ми перевстановили "Workload" із заданим набором інструментів VC - не окремим компонентом, і він встановив правильно. Ми підозрюємо, що інсталятор Visual Studio не поставив правильний набір інструментів v141 під VS2017 під час встановлення нашого спеціального компонента.
Ларс Пелларін

Для мене це допомогло виправити - сценарій, який я використовував, "допомагав" знаходити неправильний msbuild.exe і чітко викликати його.
Сковетта

4

Записи реєстру для ключа MSBuild мені добре працювали. Важливо пам’ятати, що це потрібно робити для 64-бітних або 32-бітних гілок залежно від того, яку версію MSBuild ви запускаєте. Я б не рекомендував використовувати змінні середовища, оскільки це може спричинити проблеми в різних версіях MSBuild.

Цей файл реєстру виправляє, що для обох випадків:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\10.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\11.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\12.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0\14.0]
"VCTargetsPath"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"
"VCTargetsPath10"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath10)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\'))"
"VCTargetsPath11"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath11)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V110\\'))"
"VCTargetsPath12"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath12)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V120\\'))"
"VCTargetsPath14"="$([MSBuild]::ValueOrDefault('$(VCTargetsPath14)','$(MSBuildExtensionsPath32)\\Microsoft.Cpp\\v4.0\\V140\\'))"


3

EDIT: Це стосується старих версій Visual Studio / MSBuild (зокрема MSVC2015?). З більш сучасними версіями MSBuild включений до Visual Studio Build Tools 2019, а компілятори розміщені в різних місцях та виявлені по-різному.

Це пов’язано з невідповідністю встановлених наборів інструментів MSBuild та налаштувань реєстру. Це може статися, якщо ви зробили одну або декілька з наступних дій:

  • Встановіть кілька версій Visual Studio у неправильному порядку
  • Видаліть одну або кілька версій Visual Studio
  • Вручну вносити зміни або зміни в реєстр для установки Visual Studio

Єдине безпечне і надійне рішення - це перевстановити вашу ОС. Якщо ваш проект потребує декількох версій Visual Studio для створення, спочатку встановіть найстарішу версію . Потім виправте свій код, щоб ви могли використовувати один єдиний інструмент для його побудови, інакше ви або ваші колеги незабаром знову опиниться в тому ж безладі.

Якщо це не варіант для вас, спочатку прочитайте https://stackoverflow.com/a/41786593/2279059 для кращого розуміння проблеми та того, що фактично роблять різні "рішення". Тоді, залежно від версії та налаштування Visual Studio, з часом можуть допомогти один із інших відповідей чи варіантів.

Ще кілька підказок:


2

Установка Microsoft Visual C ++ 2010 оновлення компілятора пакета оновлень 1 для Windows SDK 7.1 працювала для мене. Однак у мене виникли проблеми з оновленням, оскільки в мене вже були встановлені VS 2010 та VS 2010 SP1. Як згадував Xv вище, файл readme.htm містить рішення найбільш поширених проблем із встановленням у розділі "Відомі проблеми". Я б дотримувався інструкцій у readme.htm і перезавантажував ваш комп'ютер після кожної спроби усунення несправностей, оскільки деякі встановлення записують у ваш реєстр.


2

У моєму випадку я додав змінну оточуючого середовища VCTargetPathіз шляхом

"C: \ програмні файли (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCTargets \"

('\' в кінці має вирішальне значення, оскільки у файлах рішення проекту є посилання на файл "Microsoft cpp target".

Також, починаючи з Visual Studio 2017, MSBUILD поєднується з Visual Studio - значить, PATH variableпотрібно оновити

C: \ Файли програми (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ MSBuild \ 15.0 \ Bin

Оновлення VCTargetPathта PATHзмінні MSBUILD та побудова виправили помилку.


0

Я зіткнувся з цією помилкою, написавши сценарій збірки, який поставив би MSBuild на% PATH% після рекурсивного перекопування папки C: \ Windows \ Microsoft.NET для знайдених файлів MSBuild.exe. Останнім знайденим хітом був каталог, який був поставлений на шлях. Починаючи зdir команда потрапила б у Framework64папку після того, як Frameworkя отримав один із 64-бітових MSBuilds, поставлених на моєму шляху. Я намагався створити рішення для Visual Studio 2010 і завершив зміну мого рядка пошуку, C:\Windows\Microsoft.NETщоб C:\Windows\Microsoft.NET\Frameworkперетворити 32-бітний MSBuild.exe. Тепер мій файл рішення будується.



0

Для запису файл Microsoft.Cpp.Default.propsможе змінити env var VCTargetsPathі зробити подальше використання цього var неправильним. Я мав цю проблему і вирішив її, встановивши VCTargetsPath10і VCTargetsPath11на те саме значення, що і VCTargetsPath.

Це слід адаптувати відповідно до використовуваної версії VS.


0

Я бачу це в середовищі VS2017. Свій сценарій складання VsDevCmd.batспочатку дзвонить , і щоб вирішити цю проблему, я встановив VCTargetsPathзмінну середовища після VsDevCmdі перед викликом MSBuild:

set VCTargetsPath=%VCIDEInstallDir%VCTargets

0

Додаючи до відповіді Кріса Гонга про VS2017 / 2019 вище (у мене ще немає дозволу на коментарі).

Якщо встановлені інструменти побудови VS 2019, а не повна Visual Studio, шляхи до файлів дещо відрізняються. VCTargetsPath повинен бути

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\

Також зауважте, що завершується зворотний проріз - необхідний принаймні в моєму випадку (інструменти побудови TFS2017, VS2019). Відповідна зміна запису PATH також.


0

Я стикався з тією ж проблемою з MSBuild для VS 17

Я вирішив це, застосувавши наступні кроки:

  • У моєму випадку Microsoft.Cpp.Default.propsфайл знаходився на, C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets тому я створив VCTragetsPathрядок у реєстрі під HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0значенням C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets

  • Я також змусив свого Дженкінса працювати як адміністратор

Це вирішило моє питання.


0

Замість встановлення фіксованого шляху спробуйте це спочатку в командному рядку після складання:

SET VCTargetsPath=$(VCTargetsPath)

Змінна '$ (VCTargetsPath)', схоже, пов'язана з c ++ візуально-студійним макросом, який не відображається в c # -sdk-проектах як макрос, але все ще доступний там.

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