MSBuild C: \ में Microsoft.Cpp.Default.props के बजाय c: \ Program Files (x86) \ MSBuild में क्यों दिखता है? (त्रुटि MSB4019)


124

जब मैं vc2010 प्रोजेक्ट बनाने के लिए msbuild चलाता हूं तो मुझे निम्नलिखित त्रुटि मिलती है:

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: \ Program फ़ाइल (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath $ (MSBuildExtensionsPath32) \ Microsoft.Cpp_4_4 पर सेट
  • msbuild / वर्बोसिटी को चलाते समय: अच्छी प्रणाली के रूप में डायग MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath सेट के शुरू होने पर पर्यावरण के रूप में सेट करता है
  • MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath को शेल में पर्यावरण चर के रूप में सेट करने से उन्हें पर्यावरण के निर्माण के रूप में दिखाने का कारण नहीं बनता है।

ठीक किए गए प्रयास

  • अनइंस्टॉल .net 4.5, मरम्मत की गई .net 4.0
  • MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath को सिस्टम चर में सेट करें।

ऐसा प्रतीत होता है कि MSBuildExtensionsPath32 को ठीक से सेट नहीं किया जा रहा है और MSBuildExtensionsPath को सेट करने से मदद नहीं मिलती है

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

कृपया मुझे बताएं कि क्या आपके पास कोई विचार है जो इस चर की उचित सेटिंग को अवरुद्ध कर रहा है।


6
महान! सैकड़ों वर्कअराउंड के साथ एक दूषित विज़ुअल स्टूडियो इंस्टॉलेशन के परिणामस्वरूप हुई एक त्रुटि के बारे में एक और सवाल जो कुछ चुनिंदा परिदृश्यों में ही काम करता है ...
फ्लोरियन विंटर

जवाबों:


75

मुझे यह समस्या तब आई जब उनके कमांड लाइन टूल का उपयोग करके एक cocos2d-x एप्लिकेशन प्रकाशित किया गया, जिसे MSBuild कहते हैं। मैं विन 7 64-बिट, VS2013 एक्सप्रेस, cocos2d-x संस्करण 3.3, .NET फ्रेमवर्क 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")
fiat

'V4.0' के साथ समाप्त होने वाले पथ के साथ मदद मिली
अलेक्जेंडर

50

उन लोगों के लिए जिन्होंने एमएस के निर्धारित आदेश का पालन नहीं किया था ( एक्सवी के जवाब देखें ) आप अभी भी समस्या को ठीक कर सकते हैं।

MSBuild VCTargetsPathडिफ़ॉल्ट cpp गुणों का पता लगाने के लिए उपयोग करता है, लेकिन इसलिए नहीं क्योंकि रजिस्ट्री में इस स्ट्रिंग मान का अभाव है।

स्ट्रिंग मान के लिए जाँच करें

  • Regedit लॉन्च करें
  • के लिए नेविगेटर HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • VCTargetsPathकुंजी का निरीक्षण करें । मान = " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\" होना चाहिए

तै होना

  • करने के लिए regigit नेविगेटर लॉन्च करें 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
यार्गडॉन

1
@ सीएमएम-उपयोगकर्ता एचकेएलएम का मतलब है कि 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

यह पायथन और वीएस बिल्ड टूल्स स्थापित करता है जो अधिकांश नोड मॉड्यूल को संकलित करने के लिए आवश्यक हैं। इसने एक ट्रीट काम किया!


1
अच्छी बात है लेकिन दुर्भाग्य से एज़्योर के लिए काम नहीं करता है।
अलेक्सी कांत्सेविच

6
उन लोगों के लिए जो मेरी तरह एक मुद्दा हो सकता है। मुझे --productionविकल्प की आवश्यकता थी । npm install --global --production windows-build-tools नोड-जिप स्थापित निर्देशों के अनुसार: github.com/nodejs/node-gyp
eliotRosewater

15

विंडोज 10 पर विजुअल स्टूडियो 2017 और 2019 के लिए

यहाँ बहुत सारे उत्तर विजुअल स्टूडियो के पुराने संस्करणों पर लागू होते हैं। विजुअल स्टूडियो 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 नामक कोई फ़ोल्डर नहीं था। मेरे MSBuild फ़ोल्डर में। तो इस तथ्य को भी ध्यान में रखें कि ऊपर का रास्ता विजुअल स्टूडियो 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 \ VCE \ VCTargets
Madura Pradeep

1
यह Microsoft Visual Studio\2019\BuildToolsया समान भिन्नताएं भी हो सकती हैं - और मुझे लगता है कि बिल्डटूल और समुदाय के बजाय आपके पास व्यावसायिक और उद्यम भी हो सकते हैं। vswhere.exe -products * -property installationPathसभी संयोजनों की खोज करेगा, और सभी स्थापित उत्पादों के स्थान लौटाएगा।
एमएसल्टर्स

1
'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
एंड्रयू कोस्टर

13

विंडोज एसडीके 7.1 के लिए माइक्रोसॉफ्ट विजुअल सी ++ 2010 सर्विस पैक 1 कंपाइलर अपडेट इंस्टॉल करना तय कियाMSB4019 त्रुटियों को जो मुझे 7 एक्स 64 पर मिल रहा था।

उस अद्यतन का रीडमी बताता है कि अनुशंसित आदेश है

  1. विजुअल स्टूडियो 2010
  2. विंडोज एसडीके 7.1
  3. विजुअल स्टूडियो 2010 SP1
  4. विंडोज एसडीके 7.1 के लिए विजुअल सी ++ 2010 SP1 कंपाइलर अपडेट

ओह ठीक। मैंने इसके लिए तय किया। लापता रजिस्ट्री कुंजी में जोड़ें। मैं इसे पोस्ट करूंगा और इस आदेश का पालन करने के लिए अपने सेटअप डॉक्स को अपडेट करूंगा
पीटर काह्न

6

64-बिट सिस्टम पर, MSBuild निम्नलिखित गुणों (जहाँ C: SystemDrive है) को डिफॉल्ट करता है:

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

यदि ऐसा नहीं होता है, तो इसका मतलब है कि आपके पास कुछ कस्टम थर्ड-पार्टी ओवरराइड लक्ष्य स्थापित हैं, या आपका MSBuild इंस्टॉलेशन दूषित है।

कोशिश करने के लिए चीजें:

  • .NET स्थापना को सुधारें
  • नवीनतम विज़ुअल स्टूडियो सर्विस पैक लागू करें
  • MSBuildExtensionsPathऊपर के रूप में मैन्युअल रूप से सेट करें ( x8664-बिट मशीनों पर भाग को नोट करें )

2
धन्यवाद, लेकिन जो अभी भी सेट नहीं हैं: 1) रिपेयर .net 4.5, 2) अनइंस्टॉल .net 4.5 और रिपेयर 4.0। अगर मैं उन्हें पर्यावरण में मैन्युअल रूप से सेट करता हूं तो यह भी काम नहीं करता है
पीटर काह्न

5

मुझे विजुअल स्टूडियो 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 (पुराने संस्करण), विजुअल स्टूडियो (नए संस्करण), या यहां तक ​​कि टीम फाउंडेशन बिल्ड के साथ स्थापित किया गया हो सकता है।

MSBuild को विजुअल स्टूडियो या TFS के संस्करण से मेल खाने वाली कॉन्फ़िगरेशन फाइल, कंपाइलर, आदि (एक टूलसेट) की आवश्यकता होती है, साथ ही साथ .NET का संस्करण जिसके विरुद्ध सोर्स कोड संकलित किया जाएगा।

MSBuild कैसे स्थापित किया गया था इसके आधार पर, कॉन्फ़िगरेशन फ़ाइलें इनमें से एक या अधिक पथों में हो सकती हैं।

  • 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 \

जैसा कि अन्य उत्तरों में वर्णित है, टूलसेट पथ पर एक रजिस्ट्री आइटम और / या पर्यावरण चर बिंदु होना चाहिए।

  • HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0 के तहत VCTargetsPath कुंजी
  • VCTargetsPath पर्यावरण चर।

कभी-कभी, एक उपकरण को स्थापित करने जैसा एक ऑपरेशन रजिस्ट्री और / या पर्यावरण चर को गलत तरीके से सेट करेगा। अन्य जवाब उन्हें ठीक करने पर सभी भिन्नताएं हैं।

मेरे द्वारा जोड़े जाने वाली एकमात्र चीज़ पर्यावरणीय चर है जो मेरे लिए काम नहीं करता था जब मैंने अनुगामी \ _ को छोड़ दिया था


यह! हमें अपने बिल्ड एजेंट पर कोई पूर्ण VS2017 स्थापित नहीं होने की समस्या थी। हमने एक दिए गए VC टूल सेट के साथ "वर्कलोड" को फिर से इंस्टॉल किया - व्यक्तिगत घटक नहीं, और यह एक सही इंस्टॉल किया। हमें संदेह है कि विजुअल स्टूडियो इंस्टॉलर ने हमारे कस्टम घटक चयन स्थापित के दौरान VS2017 के तहत सही टूलसेट v141 नहीं डाला।
लार्स पेलारिन

मेरे लिए, इसने इसे ठीक करने में मदद की - एक स्क्रिप्ट जो मैं उपयोग कर रहा था वह गलत ढंग से 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 विजुअल स्टूडियो बिल्ड टूल्स 2019 में शामिल है, और संकलक अलग-अलग स्थानों पर स्थित हैं और विभिन्न तरीकों से पता लगाया गया है।

यह स्थापित MSBuild टूलसेट और रजिस्ट्री सेटिंग्स के बेमेल के कारण है। यह हो सकता है यदि आपने निम्न में से एक या अधिक किया:

  • गलत क्रम में कई Visual Studio संस्करण स्थापित करें
  • Visual Studio के एक या अधिक संस्करणों की स्थापना रद्द करें
  • मैन्युअल रूप से रजिस्ट्री परिवर्तन या विज़ुअल स्टूडियो इंस्टॉलेशन में संशोधन करें

एकमात्र सुरक्षित और विश्वसनीय समाधान अपने ओएस को फिर से स्थापित करना है। यदि आपके प्रोजेक्ट को बनाने के लिए Visual Studio के कई संस्करणों की आवश्यकता है, तो सबसे पुराना संस्करण पहले स्थापित करें । फिर अपने कोड को ठीक करें ताकि आप इसे बनाने के लिए एक एकल उपकरण का उपयोग कर सकें, या आप या आपके सहयोगी जल्द ही फिर से एक ही गड़बड़ में होंगे।

यदि यह आपके लिए कोई विकल्प नहीं है, तो समस्या की बेहतर समझ के लिए पहले https://stackoverflow.com/a/41786593/2279059 पढ़ें और वास्तव में विभिन्न "समाधान" क्या करें। फिर, आपके विज़ुअल स्टूडियो संस्करण और सेटअप के आधार पर, उनमें से अन्य उत्तरों या विविधताओं में से एक अंततः मदद कर सकता है।

कुछ और संकेत:


2

विंडोज एसडीके 7.1 के लिए माइक्रोसॉफ्ट विजुअल सी ++ 2010 सर्विस पैक 1 कंपाइलर अपडेट इंस्टॉल करना मेरे लिए काम कर गया। हालाँकि, मैंने अद्यतन के साथ समस्याओं का अनुभव किया क्योंकि मेरे पास पहले ही VS 2010 और VS 2010 SP1 स्थापित था। जैसा कि ऊपर Xv द्वारा उल्लेख किया गया है, readme.htm फ़ाइल में "ज्ञात मुद्दे" अनुभाग में सबसे आम स्थापना समस्याओं के समाधान हैं। मैं readme.htm में दिए गए निर्देशों का पालन करूंगा और प्रत्येक समस्या निवारण के प्रयास के बाद आपकी मशीन को रिबूट कर दूंगा क्योंकि कुछ इंस्टॉल आपकी रजिस्ट्री को लिखते हैं।


2

मेरे मामले में, मैंने VCTargetPathपथ के साथ एक पर्यावरण चर जोड़ा है

"C: \ Program Files (x86) \ Microsoft विज़ुअल स्टूडियो \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCTgets"

('\' अंत में महत्वपूर्ण है, क्योंकि परियोजना समाधान फ़ाइलों में "Microsoft cpp लक्ष्य" फ़ाइल का संदर्भ है।

इसके अलावा, विजुअल स्टूडियो 2017 MSBUILD से शुरू होकर विजुअल स्टूडियो के भीतर आता है - इसलिए, इसके PATH variableसाथ अपडेट किए जाने की आवश्यकता है

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

अद्यतन VCTargetPathऔर MSBUILD के PATHचर और भवन में त्रुटि को ठीक किया गया।


0

मैं एक बिल्ड स्क्रिप्ट लिखकर इस त्रुटि पर आया था जो किसी भी मिली MSBuild.exe फ़ाइलों के लिए C: \ Windows \ Microsoft.NET फ़ोल्डर के माध्यम से पुन: खुदाई के बाद MSBuild% PATH% पर डाल देगा। अंतिम हिट हिट वह निर्देशिका थी जिसे पथ पर रखा गया था। जब से मैं 64 बिट MSBuilds में से एक को अपने रास्ते पर लाने के बाद dirकमांड Framework64फोल्डर को हिट करेगा Framework। मैं एक दृश्य स्टूडियो 2010 समाधान का निर्माण और से मेरी खोज स्ट्रिंग में फेरबदल को बंद करने के लिए कोशिश कर रहा था C:\Windows\Microsoft.NETकरने के लिए C:\Windows\Microsoft.NET\Frameworkइतना है कि मैं एक 32bit MSBuild.exe साथ हवा जाएगा। अब मेरी समाधान फ़ाइल बनाता है।


0

मैंने VCTargetsPath={c:\...}अपने हडसन की नौकरी के लिए एक पर्यावरण चर के रूप में जोड़ा ।


0

रिकॉर्ड के लिए, फ़ाइल Microsoft.Cpp.Default.propsenv var को संशोधित कर सकती है VCTargetsPathऔर उस var के बाद के उपयोगों को गलत बना सकती है। मुझे वह समस्या थी और उसे निर्धारित करके VCTargetsPath10और VCTargetsPath11उसी मूल्य से हल करने की VCTargetsPath

यह आपके द्वारा उपयोग किए जा रहे वीएस संस्करण के अनुसार अनुकूलित किया जाना चाहिए।


0

मैं इसे VS2017 के माहौल में देख रहा हूं। मेरी बिल्ड स्क्रिप्ट VsDevCmd.batपहले कॉल करती है , और इस समस्या को हल करने के लिए मैंने MSBuild को कॉल करने से पहले और VCTargetsPathबाद में पर्यावरण चर निर्धारित किया है VsDevCmd:

set VCTargetsPath=%VCIDEInstallDir%VCTargets

0

VS2017 / 2019 के बारे में क्रिस गोंग के उत्तर के साथ जोड़ना (मुझे अभी तक टिप्पणियों की अनुमति नहीं है)।

यदि वीएस 2019 बिल्ड टूल पूर्ण विज़ुअल स्टूडियो के बजाय स्थापित किए गए हैं तो फ़ाइल पथ थोड़े अलग हैं। VCTargetsPath तब होना चाहिए

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

यह भी नोट करें कि समाप्त होने वाले बैकलैश - मेरे मामले में कम से कम आवश्यक हैं (TFS2017, VS2019 बिल्ड टूल)। PATH प्रविष्टि में भी परिवर्तन।


0

मैं वीएस 17 के लिए MSBuild के साथ एक ही मुद्दे का सामना कर रहा था

मैंने निम्न चरणों को लागू करके इसे हल किया है:

  • मेरे मामले में 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 # -ddk- प्रोजेक्ट में मैक्रो के रूप में नहीं दिखाया गया है, लेकिन अभी भी वहां उपलब्ध है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.