Mengapa MSBuild mencari di C: \ for Microsoft.Cpp.Default.props daripada di c: \ Program Files (x86) \ MSBuild? (kesalahan MSB4019)

124

Ketika saya menjalankan msbuild untuk membangun proyek vc2010 saya mendapatkan kesalahan berikut:

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 terletak c: \ Program File (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCT TargetPath diatur ke $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
  • ketika menjalankan msbuild / verbosity: diag sebagai sistem yang baik menunjukkan MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath ditetapkan sebagai Lingkungan pada awal pembuatan
  • pengaturan MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath ditetapkan sebagai variabel lingkungan di shell tidak menyebabkan mereka untuk ditampilkan sebagai Lingkungan pada awal pembuatan

Perbaikan Telah Dicoba

  • Menghapus .net 4.5, memperbaiki .net 4.0
  • Tetapkan MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath di variabel sistem.

Tampaknya MSBuildExtensionsPath32 tidak disetel dengan benar dan pengaturan MSBuildExtensionsPath tidak membantu

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

Beri tahu saya jika Anda tahu apa yang memblokir pengaturan yang tepat dari variabel ini.

Peter Kahn
sumber
6
Bagus! Pertanyaan lain tentang kesalahan yang dihasilkan dari penginstalan Visual Studio yang rusak dengan ratusan solusi yang masing-masing hanya berfungsi dalam beberapa skenario tertentu ...
Florian Winter

Jawaban:

75

Saya mendapat masalah ini saat menerbitkan aplikasi cocos2d-x menggunakan alat baris perintah mereka, yang memanggil MSBuild. Saya menggunakan Win 7 64-bit, VS2013 express, cocos2d-x versi 3.3, .NET Framework 4.5 diinstal.

Saya memperbaiki masalah dengan mengatur yang berikut ini sebelum menjalankan perintah cocos.py publish:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
Jeff
sumber
Ini membantu saya menginstal paket node oracledb. Saya mengikuti instruksi di community.oracle.com/docs/DOC-931127 dan meskipun demikian saya mendapat kesalahan MSB4019, yang saya perbaiki dengan jawaban ini.
Pedro Otero
1
Versi PowerShell:[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
fiat
Dibantu dengan jalur yang diakhiri dengan 'v4.0'
Alexander
50

Bagi mereka yang tidak mengikuti perintah MS proscribed (lihat jawaban Xv ), Anda masih bisa memperbaiki masalah.

MSBuild menggunakan VCTargetsPathuntuk menemukan properti cpp default tetapi tidak dapat karena registri tidak memiliki Nilai String.

Periksa Nilai String

  • Luncurkan regedit
  • Navigator ke HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Periksa VCTargetsPathkunci. Nilainya harus = " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Memperbaiki

  • Luncurkan regedit Navigator ke HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Tambahkan Nilai String VCTargetsPath
  • Tetapkan Nilai menjadi " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Catatan: HKLMsingkatan HKEY_LOCAL_MACHINE.

Peter Kahn
sumber
12
Entri registri sudah ada untuk saya. Saya harus menentukan variabel lingkungan dengan nama yang disetel ke nilai di registri untuk melewati yang itu:set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
elmotec
12
bagi saya itu hanya bekerja dengan set iniVCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
ygaradon
1
@ cmm-user HKLM singkatan HKEY_LOCAL_MACHINEAnda pasti harus memilikinya di regedit
Michael Johnston
4
VCT TargetPath bukan kunci, tapi Nilai String!
John Smith
5
Bagi saya sekarangset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
Daniel Gray
26

Saya mengalami masalah yang sama baru-baru ini dan setelah menginstal paket yang berbeda dalam urutan yang berbeda, itu menjadi sangat berantakan. Kemudian saya menemukan repo ini - https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

Ini menginstal alat Python & VS Build yang diperlukan untuk mengkompilasi sebagian besar modul node. Itu berhasil!

Luke
sumber
1
Untung tapi sayangnya tidak berfungsi untuk Azure.
Aleksey Kontsevich
6
Bagi mereka yang mungkin mengalami masalah seperti saya. Saya membutuhkan --productionopsi. npm install --global --production windows-build-tools Sesuai petunjuk pemasangan node-gyp: github.com/nodejs/node-gyp
eliotRosewater
15

Untuk Visual Studio 2017 dan 2019 di Windows 10

Banyak jawaban di sini berlaku untuk versi Visual Studio yang lebih lama. Apa yang berhasil bagi saya, jika menggunakan versi Komunitas Visual Studio 2017, adalah menetapkan variabel lingkungan yang disebut VCTargetsPathdan memberinya nilai

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

Jika menggunakan versi Komunitas Visual Studio 2019,

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

Jawaban lain di sini mengatur variabel ini ke c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140tetapi saya perhatikan di instalasi studio visual saya, tidak ada folder bernama Microsoft.Cpp di folder MSBuild saya. Jadi ingatlah ini serta fakta bahwa jalur di atas adalah untuk Visual Studio 2017 versi Komunitas.

Juga, pastikan bahwa lintasan MSBuild di variabel lingkungan Anda mengarah ke versi MSBuild yang benar jika Anda menggunakan versi komunitas Visual Studio 2017,

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

Jika Anda menggunakan versi komunitas Visual Studio 2019,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
Chris Gong
sumber
1
Di milikku, VCTargetPath adalah C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ Common7 \ IDE \ VC \ VCT Target
Madura Pradeep
1
Bisa juga Microsoft Visual Studio\2019\BuildToolsatau variasi serupa - dan saya kira alih-alih BuildTools dan Komunitas Anda juga bisa memiliki Professional dan Enterprise. vswhere.exe -products * -property installationPathakan mencari semua kombinasi, dan mengembalikan lokasi semua produk yang dipasang.
MSalters
1
'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Andrew Koster
13

Menginstal Pembaruan Kompiler Microsoft Visual C ++ 2010 Paket Layanan 1 untuk Windows SDK 7.1 memperbaiki MSB4019kesalahan yang saya buat pada Windows7 x64.

Pembacaan pembaruan itu menyatakan bahwa urutan yang disarankan adalah

  1. Visual Studio 2010
  2. SDK Windows 7.1
  3. Visual Studio 2010 SP1
  4. Pembaruan Kompiler Visual C ++ 2010 SP1 untuk Windows SDK 7.1
xverges
sumber
Oh oke. Saya menemukan cara untuk memperbaikinya. Tambahkan kunci registri yang hilang. Saya akan mempostingnya dan memperbarui dokumen pengaturan saya untuk mengikuti perintah ini
Peter Kahn
6

Pada sistem 64-bit, default MSBuild ke properti berikut (di mana C: adalah SystemDrive):

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

Jika tidak, itu berarti Anda memiliki beberapa target penggantian pihak ketiga kustom yang diinstal, atau penginstalan MSBuild Anda rusak.

Hal untuk dicoba:

  • Perbaiki penginstalan .NET
  • Terapkan Visual Studio Service Pack terbaru
  • Atur MSBuildExtensionsPathsecara manual seperti di atas (perhatikan x86bagian pada mesin 64-bit)
KMoraz
sumber
2
Terima kasih, tetapi Mereka masih belum ditetapkan setelah: 1) memperbaiki .net 4.5, 2) menghapus .net 4.5 dan memperbaiki 4.0. Jika saya mengaturnya secara manual di lingkungan itu juga tidak akan berhasil
Peter Kahn
5

Saya mengalami masalah ini di Visual Studio 2015 edisi. Ketika saya menggunakan cmake untuk menghasilkan proyek kesalahan ini muncul.

kesalahan MSB4019: Proyek yang diimpor "D: \ Microsoft.Cpp.Default.props" tidak ditemukan

Saya memperbaikinya dengan menambahkan String

VCT TargetPath

dengan nilai

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

di jalur registri

HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 14.0

Sjs
sumber
Lakukan ini. Mulai ulang cmd setelahnya, tetapi tidak memperbaiki masalah.
Dan
4

MSBuild dalam alat build independen yang sering digabungkan dengan alat lain. Ini mungkin telah diinstal di komputer Anda dengan .NET (versi yang lebih lama), Visual Studio (versi yang lebih baru), atau bahkan Team Foundation Build.

MSBuild membutuhkan file konfigurasi, kompiler, dll (ToolSet) yang sesuai dengan versi Visual Studio atau TFS yang akan menggunakannya, serta versi .NET yang akan digunakan untuk kompilasi kode sumber.

Bergantung pada bagaimana MSBuild diinstal, file konfigurasi mungkin berada di satu atau lebih jalur ini.

  • C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \
  • C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \
  • C: \ Program Files (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \

Seperti yang dijelaskan dalam jawaban lain, item registri dan / atau titik variabel lingkungan harus ke jalur ToolSet.

  • Kunci VCT TargetPath di bawah HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
  • Variabel lingkungan VCT TargetPath.

Kadang-kadang, operasi seperti menginstal alat akan membuat registri dan / atau variabel lingkungan tidak disetel dengan benar. Jawaban lainnya adalah semua variasi untuk memperbaikinya.

Satu-satunya hal yang harus saya tambahkan adalah variabel lingkungan tidak berfungsi untuk saya ketika saya meninggalkan jejak \

mmesser314
sumber
Ini! Kami mengalami masalah pada agen pembuatan kami tanpa pemasangan VS2017 penuh. Kami menginstal ulang "Beban Kerja" dengan set alat VC yang diberikan - bukan komponen individu, dan melakukan penginstalan yang benar. Kami menduga Penginstal Visual Studio tidak meletakkan toolset v141 yang tepat di bawah VS2017 selama penginstalan pemilihan komponen kustom kami.
Lars Pellarin
Bagi saya, ini membantu memperbaikinya - skrip yang saya gunakan "membantu" menemukan msbuild.exe yang salah dan menyebutnya secara eksplisit.
Scovetta
4

Entri registri untuk kunci MSBuild berfungsi dengan baik bagi saya. Penting untuk diingat bahwa ini harus dilakukan untuk cabang 64-bit atau 32-bit tergantung pada versi MSBuild yang Anda jalankan. Saya tidak akan merekomendasikan untuk menggunakan variabel lingkungan karena dapat menyebabkan masalah di berbagai versi MSBuild.

File registri ini memperbaiki kedua kasus tersebut:

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\\'))"
Konstantin Ineshin
sumber
3

Tidak ada yang berhasil untuk saya kecuali, mengatur jalur sebagai:

C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0
sowmiya lakshmi
sumber
jalan mana yang harus saya atur?
Nageshwar Reddy Pandem
3

EDIT: Ini berlaku untuk versi Visual Studio / MSBuild (khususnya MSVC2015?). Dengan versi yang lebih modern, MSBuild disertakan dalam Visual Studio Build Tools 2019, dan kompiler berada di tempat berbeda dan terdeteksi dengan cara berbeda.

Hal ini disebabkan oleh ketidakcocokan kumpulan alat MSBuild dan pengaturan registri yang terinstal. Ini dapat terjadi jika Anda melakukan satu atau beberapa hal berikut:

  • Instal beberapa versi Visual Studio dalam urutan yang salah
  • Bongkar satu atau lebih versi Visual Studio
  • Secara manual membuat perubahan atau modifikasi registri pada penginstalan Visual Studio

Satu-satunya solusi yang aman dan andal adalah menginstal ulang OS Anda. Jika proyek Anda memerlukan beberapa versi Visual Studio untuk dibuat, instal versi terlama terlebih dahulu . Kemudian perbaiki kode Anda sehingga Anda dapat menggunakan satu alat untuk membuatnya, atau Anda atau kolega Anda akan segera berada dalam kekacauan yang sama lagi.

Jika ini bukan pilihan untuk Anda, baca dulu https://stackoverflow.com/a/41786593/2279059 untuk pemahaman yang lebih baik tentang masalah dan apa yang sebenarnya dilakukan oleh berbagai "solusi". Kemudian, bergantung pada versi dan penyiapan Visual Studio Anda, salah satu jawaban atau variasinya pada akhirnya dapat membantu.

Beberapa petunjuk lagi:

Florian Winter
sumber
2

Menginstal Pembaruan Kompiler Microsoft Visual C ++ 2010 Paket Layanan 1 untuk Windows SDK 7.1 berhasil untuk saya. Namun, saya mengalami masalah dengan pembaruan karena saya sudah menginstal VS 2010 dan VS 2010 SP1. Seperti yang disebutkan oleh Xv di atas, file readme.htm berisi solusi untuk masalah penginstalan yang paling umum di bagian "Masalah yang Diketahui". Saya akan mengikuti instruksi di readme.htm dan reboot mesin Anda setelah setiap upaya pemecahan masalah karena beberapa instalasi menulis ke registri Anda.

heatfan
sumber
2

Dalam kasus saya, saya telah menambahkan variabel Lingkungan VCTargetPathdengan jalur

"C: \ Program Files (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCT Target \"

('\' di bagian akhir sangat penting, karena file solusi proyek memiliki referensi ke file "target cpp Microsoft".

Juga, mulai dari Visual Studio 2017 MSBUILD hadir dalam Visual Studio - jadi, PATH variableperlu diperbarui

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

Memperbarui VCTargetPathdan PATHvariabel MSBUILD dan membangun memperbaiki kesalahan.

Arjun Krishna
sumber
0

Saya menemukan kesalahan ini dengan menulis skrip Build yang akan menempatkan MSBuild di% PATH% setelah secara rekursif menggali melalui folder C: \ Windows \ Microsoft.NET untuk file MSBuild.exe yang ditemukan. Hit terakhir yang ditemukan adalah direktori yang diletakkan di jalur. Karena dirperintah akan masuk ke Framework64folder setelah Frameworksaya mendapatkan salah satu MSBuild 64bit di jalur saya. Saya mencoba untuk membangun solusi Visual Studio 2010 dan akhirnya mengubah string pencarian saya dari C:\Windows\Microsoft.NETmenjadi C:\Windows\Microsoft.NET\Frameworksehingga saya akan berakhir dengan MSBuild.exe 32bit. Sekarang file solusi saya dibangun.

jxramos.dll
sumber
0

Saya baru saja menambahkan VCTargetsPath={c:\...}sebagai variabel lingkungan ke pekerjaan Hudson saya.

pengguna2818782
sumber
0

Sebagai catatan, file Microsoft.Cpp.Default.propsdapat memodifikasi env var VCTargetsPathdan membuat penggunaan var tersebut menjadi tidak benar. Saya memiliki masalah itu dan menyelesaikannya dengan menetapkan VCTargetsPath10dan VCTargetsPath11dengan nilai yang sama dari VCTargetsPath.

Ini harus disesuaikan dengan versi VS yang Anda gunakan.

STM
sumber
0

Saya melihat ini di lingkungan VS2017. Skrip build saya memanggil VsDevCmd.batterlebih dahulu, dan untuk mengatasi masalah ini, saya menetapkan VCTargetsPathvariabel lingkungan setelah VsDevCmddan sebelum memanggil MSBuild:

set VCTargetsPath=%VCIDEInstallDir%VCTargets
Hugh
sumber
0

Menambah jawaban Chris Gong tentang VS2017 / 2019 di atas (Saya belum memiliki izin komentar).

Jika VS 2019 Build Tools diinstal daripada Visual Studio lengkap maka jalur file sedikit berbeda. VCT TargetPath kemudian harus

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

Perhatikan juga terminating backslash - diperlukan setidaknya dalam kasus saya (TFS2017, VS2019 Build tools). Perubahan terkait ke entri PATH juga.

Lars V
sumber
0

Saya menghadapi masalah yang sama dengan MSBuild untuk VS 17

Saya menyelesaikan ini dengan menerapkan langkah-langkah berikut:

  • Dalam kasus saya, Microsoft.Cpp.Default.propsfile tersebut terletak di C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets jadi saya membuat VCTragetsPathstring di registri di bawah HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0dengan nilai C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets

  • Saya juga membuat Jenkins saya dijalankan sebagai pengguna admin

Ini memecahkan masalah saya.

Hemant
sumber
0

Alih-alih menyetel jalur tetap, coba ini di baris perintah pasca-build Anda terlebih dahulu:

SET VCTargetsPath=$(VCTargetsPath)

Variabel '$ (VCT TargetPath)' tampaknya merupakan makro visual-studio terkait c ++ yang tidak ditampilkan di c # -sdk-projects sebagai makro, tetapi masih tersedia di sana.

Sam
sumber