Warum sucht MSBuild in C: \ nach Microsoft.Cpp.Default.props anstelle von c: \ Programme (x86) \ MSBuild? (Fehler MSB4019)

124

Wenn ich msbuild ausführe, um ein vc2010-Projekt zu erstellen, wird folgende Fehlermeldung angezeigt:

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 befindet sich unter c: \ Program File (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath auf $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \ festgelegt
  • Beim Ausführen von msbuild / verbosity: diag as good system zeigt MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath an, die zu Beginn des Builds als Umgebung festgelegt wurden
  • MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath Satzes als Umgebungsvariablen in Shell - Einstellung bewirken , dass sie nicht zeigen , zu Beginn der Build - Umgebung

Korrekturen versucht

  • Deinstallierte .net 4.5, reparierte .net 4.0
  • Legen Sie MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath in Systemvariablen fest.

Es scheint, dass MSBuildExtensionsPath32 nicht richtig eingestellt ist und das Festlegen von MSBuildExtensionsPath nicht hilft

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

Bitte lassen Sie mich wissen, wenn Sie Ideen haben, was die richtige Einstellung dieser Variablen blockiert.

Peter Kahn
quelle
6
Toll! Eine weitere Frage zu einem Fehler, der aus einer beschädigten Visual Studio-Installation mit Hunderten von Problemumgehungen resultiert, die jeweils nur in ausgewählten Szenarien funktionieren ...
Florian Winter

Antworten:

75

Ich habe dieses Problem beim Veröffentlichen einer cocos2d-x-Anwendung mit ihrem Befehlszeilentool, das MSBuild aufruft. Ich verwende Win 7 64-Bit, VS2013 Express, cocos2d-x Version 3.3, .NET Framework 4.5 installiert.

Ich habe das Problem behoben, indem ich Folgendes festgelegt habe, bevor ich den Veröffentlichungsbefehl cocos.py ausgeführt habe:

SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
Jeff
quelle
Dies hat mir geholfen, das oracledb-Knotenpaket zu installieren. Ich habe die Anweisungen auf community.oracle.com/docs/DOC-931127 befolgt und trotzdem den Fehler MSB4019 erhalten, den ich mit dieser Antwort behoben habe.
Pedro Otero
1
PowerShell-Version:[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
Fiat
Geholfen mit Pfad endete mit 'v4.0'
Alexander
50

Für diejenigen, die die von MS vorgeschriebene Reihenfolge nicht befolgt haben (siehe Antwort von Xv ), können Sie das Problem dennoch beheben.

MSBuild verwendet die VCTargetsPath, um Standard-CPP-Eigenschaften zu finden, kann dies jedoch nicht, da der Registrierung dieser Zeichenfolgenwert fehlt.

Überprüfen Sie den String-Wert

  • Starten Sie regedit
  • Navigator zu HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • VCTargetsPathSchlüssel prüfen . Der Wert sollte = " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Reparieren

  • Starten Sie regedit Navigator zu HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • String-Wert hinzufügen VCTargetsPath
  • Setzen Sie den Wert auf " $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\"

Hinweis: HKLMsteht für HKEY_LOCAL_MACHINE.

Peter Kahn
quelle
12
Der Registrierungseintrag war schon für mich da. Ich musste eine Umgebungsvariable definieren, deren Name auf den Wert in der Registrierung gesetzt war, um diesen zu set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
überwinden
12
für mich hat es nur mit diesem Set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
funktioniert
1
@ cmm-Benutzer HKLM steht für HKEY_LOCAL_MACHINESie sollten es auf jeden Fall in regedit haben
Michael Johnston
4
VCTargetsPath ist kein Schlüssel, sondern ein String-Wert!
John Smith
5
Für mich war es jetztset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
Daniel Gray
26

Ich hatte in letzter Zeit das gleiche Problem und nachdem ich verschiedene Pakete in unterschiedlicher Reihenfolge installiert hatte, wurde es nur sehr chaotisch. Dann habe ich dieses Repo gefunden - https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

Es werden Python- und VS Build-Tools installiert, die zum Kompilieren der meisten Knotenmodule erforderlich sind. Es hat geklappt!

Luke
quelle
1
Gut, funktioniert aber leider nicht für Azure.
Aleksey Kontsevich
6
Für diejenigen, die ein Problem wie ich haben könnten. Ich brauchte die --productionOption. npm install --global --production windows-build-tools Gemäß den Installationsanweisungen für Node-Gyp: github.com/nodejs/node-gyp
eliotRosewater
15

Für Visual Studio 2017 und 2019 unter Windows 10

Viele der Antworten hier gelten für ältere Versionen von Visual Studio. Bei Verwendung der Visual Studio 2017 Community-Version hat es für mich funktioniert, eine Umgebungsvariable mit dem Namen VCTargetsPathund dem Wert " Festlegen" festzulegen

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

Wenn Sie die Visual Studio 2019 Community-Version verwenden,

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

Andere Antworten hier setzen diese Variable auf, c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140aber ich habe in meiner Visual Studio-Installation festgestellt, dass in meinem MSBuild-Ordner kein Ordner namens Microsoft.Cpp vorhanden ist. Beachten Sie dies ebenso wie die Tatsache, dass der obige Pfad für die Community-Version von Visual Studio 2017 gilt.

Stellen Sie außerdem sicher, dass Ihr MSBuild-Pfad in Ihren Umgebungsvariablen auf die richtige Version von MSBuild verweist, wenn Sie die Visual Studio 2017-Community-Version verwenden.

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

Wenn Sie die Community-Version von Visual Studio 2019 verwenden,

C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin
Chris Gong
quelle
1
In meinem war VCTargetPath C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ BuildTools \ Common7 \ IDE \ VC \ VCTargets
Madura Pradeep
1
Es könnten auch Microsoft Visual Studio\2019\BuildToolsoder ähnliche Variationen sein - und ich nehme an, anstelle von BuildTools und Community könnten Sie auch Professional und Enterprise haben. vswhere.exe -products * -property installationPathsucht nach allen Kombinationen und gibt die Speicherorte aller installierten Produkte zurück.
MSalters
1
'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Andrew Koster
13

Durch die Installation des Microsoft Visual C ++ 2010 Service Pack 1-Compiler-Updates für Windows SDK 7.1 wurden die MSB4019Fehler behoben, die beim Erstellen von Windows 7 x64 auftraten.

In der Readme-Datei dieses Updates wird angegeben, dass die empfohlene Reihenfolge lautet

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Visual C ++ 2010 SP1-Compiler-Update für das Windows SDK 7.1
xverges
quelle
Oh ok. Ich habe die Lösung dafür gefunden. Fügen Sie den fehlenden Registrierungsschlüssel hinzu. Ich werde es veröffentlichen und meine Setup-Dokumente aktualisieren, um dieser Reihenfolge zu folgen
Peter Kahn
6

Auf 64-Bit-Systemen verwendet MSBuild standardmäßig die folgenden Eigenschaften (wobei C: SystemDrive ist):

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

Wenn dies nicht der Fall ist, sind entweder einige benutzerdefinierte Überschreibungsziele von Drittanbietern installiert, oder Ihre MSBuild-Installation ist beschädigt.

Dinge zu versuchen:

  • Reparieren Sie die .NET-Installation
  • Wenden Sie das neueste Visual Studio Service Pack an
  • Stellen Sie MSBuildExtensionsPathmanuell wie oben (beachten Sie das x86Teil auf 64-Bit - Maschinen)
KMoraz
quelle
2
Danke, aber die sind immer noch nicht eingestellt nach: 1) .net 4.5 reparieren, 2) .net 4.5 deinstallieren und 4.0 reparieren. Wenn ich sie manuell in der Umgebung einstelle, funktioniert es auch nicht
Peter Kahn
5

Ich hatte dieses Problem in der Visual Studio 2015 Edition. Als ich mit cmake ein Projekt generiert habe, ist dieser Fehler aufgetreten.

Fehler MSB4019: Das importierte Projekt "D: \ Microsoft.Cpp.Default.props" wurde nicht gefunden

Ich habe es durch Hinzufügen eines Strings behoben

VCTargetsPath

mit Wert

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

im Registrierungspfad

HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 14.0

Sjs
quelle
Hab's gemacht. Startet das cmd danach neu, behebt das Problem jedoch nicht.
Dan
4

MSBuild in einem unabhängigen Build-Tool, das häufig mit anderen Tools gebündelt wird. Möglicherweise wurde es auf Ihrem Computer mit .NET (ältere Versionen), Visual Studio (neuere Versionen) oder sogar Team Foundation Build installiert.

MSBuild benötigt Konfigurationsdateien, Compiler usw. (ein ToolSet), die der Version von Visual Studio oder TFS entsprechen, die es verwenden wird, sowie die Version von .NET, anhand derer der Quellcode kompiliert wird.

Je nachdem, wie MSBuild installiert wurde, befinden sich die Konfigurationsdateien möglicherweise in einem oder mehreren dieser Pfade.

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

Wie in anderen Antworten beschrieben, muss ein Registrierungselement und / oder eine Umgebungsvariable auf den ToolSet-Pfad verweisen.

  • Der VCTargetsPath-Schlüssel unter HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
  • Die Umgebungsvariable VCTargetsPath.

Gelegentlich wird bei einem Vorgang wie der Installation eines Tools die Registrierung und / oder Umgebungsvariable falsch eingestellt. Die anderen Antworten sind alle Variationen bei der Behebung.

Das einzige, was ich hinzufügen muss, ist, dass die Umgebungsvariable bei mir nicht funktioniert hat, als ich das nachfolgende \ weggelassen habe

mmesser314
quelle
Dies! Wir hatten Probleme mit unserem Build Agent ohne vollständige VS2017-Installation. Wir haben das "Workload" mit einem bestimmten VC-Tool-Set neu installiert - nicht mit der einzelnen Komponente, und es wurde korrekt installiert. Wir vermuten, dass das Visual Studio-Installationsprogramm bei der Installation der benutzerdefinierten Komponentenauswahl nicht das richtige Toolset v141 unter VS2017 platziert hat.
Lars Pellarin
Für mich hat dies geholfen, das Problem zu beheben. Ein Skript, das ich verwendet habe, hat "hilfreich" die falsche msbuild.exe gefunden und explizit aufgerufen.
Scovetta
4

Die Registrierungseinträge für den MSBuild-Schlüssel haben für mich einwandfrei funktioniert. Es ist wichtig zu beachten, dass dies für 64-Bit- oder 32-Bit-Zweige erfolgen muss, je nachdem, welche Version von MSBuild Sie ausführen. Ich würde nicht empfehlen, Umgebungsvariablen zu verwenden, da dies in verschiedenen Versionen von MSBuild zu Problemen führen kann.

Diese Registrierungsdatei behebt das für beide Fälle:

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
quelle
3

Nichts anderes hat für mich funktioniert, außer den Pfad wie folgt festzulegen:

C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0
sowmiya lakshmi
quelle
Welchen Pfad soll ich setzen?
Nageshwar Reddy Pandem
3

BEARBEITEN: Dies gilt für ältere Versionen von Visual Studio / MSBuild (speziell MSVC2015?). Bei moderneren Versionen ist MSBuild in Visual Studio Build Tools 2019 enthalten, und Compiler befinden sich an verschiedenen Orten und werden auf unterschiedliche Weise erkannt.

Dies ist auf eine Nichtübereinstimmung der installierten MSBuild-Toolsets und Registrierungseinstellungen zurückzuführen. Dies kann passieren, wenn Sie eine oder mehrere der folgenden Aktionen ausgeführt haben:

  • Installieren Sie mehrere Visual Studio-Versionen in der falschen Reihenfolge
  • Deinstallieren Sie eine oder mehrere Versionen von Visual Studio
  • Nehmen Sie manuell Registrierungsänderungen oder -modifikationen an der Visual Studio-Installation vor

Die einzige sichere und zuverlässige Lösung besteht darin, Ihr Betriebssystem neu zu installieren. Wenn für Ihr Projekt mehrere Versionen von Visual Studio zum Erstellen erforderlich sind, installieren Sie zuerst die älteste Version . Korrigieren Sie dann Ihren Code, damit Sie ihn mit einem einzigen Tool erstellen können, oder Sie oder Ihre Kollegen werden bald wieder im selben Chaos sein.

Wenn dies für Sie keine Option ist, lesen Sie zuerst https://stackoverflow.com/a/41786593/2279059 um ein besseres Verständnis des Problems und der tatsächlichen Funktionsweise der verschiedenen "Lösungen" zu erhalten. Abhängig von Ihrer Visual Studio-Version und Ihrem Setup kann dann möglicherweise eine der anderen Antworten oder Variationen davon hilfreich sein.

Noch ein paar Hinweise:

Florian Winter
quelle
2

Die Installation des Microsoft Visual C ++ 2010 Service Pack 1-Compiler-Updates für das Windows SDK 7.1 hat bei mir funktioniert. Beim Update traten jedoch Probleme auf, da VS 2010 und VS 2010 SP1 bereits installiert waren. Wie durch erwähnt Xv oben enthält die Datei readme.htm Lösungen für die häufigsten Probleme bei der Installation in der „Bekannte Probleme“ Abschnitt. Ich würde den Anweisungen in der Datei readme.htm folgen und Ihren Computer nach jedem Fehlerbehebungsversuch neu starten, da einige Installationen in Ihre Registrierung schreiben.

Hitzeventilator
quelle
2

In meinem Fall habe ich eine Umgebungsvariable VCTargetPathmit Pfad hinzugefügt

"C: \ Programme (x86) \ Microsoft Visual Studio \ 2017 \ Professional \ Common7 \ IDE \ VC \ VCTargets \"

('\' am Ende ist entscheidend, da die Projektlösungsdateien einen Verweis auf die Datei "Microsoft cpp target" enthalten.

Ab Visual Studio 2017 ist MSBUILD auch in Visual Studio enthalten - daher PATH variablemuss das mit aktualisiert werden

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

Das Aktualisieren VCTargetPathund Erstellen von MSBUILD- PATHVariablen sowie das Erstellen des Fehlers haben den Fehler behoben.

Arjun Krishna
quelle
0

Ich bin auf diesen Fehler gestoßen, indem ich ein Build-Skript geschrieben habe, das MSBuild auf den% PATH% setzt, nachdem ich rekursiv im Ordner C: \ Windows \ Microsoft.NET nach gefundenen MSBuild.exe-Dateien gesucht habe. Der letzte gefundene Treffer war das Verzeichnis, das auf den Pfad gelegt wurde. Da der dirBefehl den Framework64Ordner treffen würde, nachdem Frameworkich eines der 64-Bit-MSBuilds auf meinen Pfad gesetzt hatte. Ich habe versucht, eine Visual Studio 2010-Lösung zu erstellen, und am Ende meine Suchzeichenfolge von C:\Windows\Microsoft.NETauf geändert , C:\Windows\Microsoft.NET\Frameworksodass ich eine 32-Bit-MSBuild.exe erhalten habe. Jetzt wird meine Lösungsdatei erstellt.

jxramos
quelle
0

Ich habe gerade VCTargetsPath={c:\...}meinen Hudson-Job als Umgebungsvariable hinzugefügt .

user2818782
quelle
0

Für den Datensatz kann die Datei Microsoft.Cpp.Default.propsdie env var ändern VCTargetsPathund nachfolgende Verwendungen dieser var falsch machen. Ich hatte dieses Problem und löste es durch Einstellen VCTargetsPath10und VCTargetsPath11auf den gleichen Wert alsVCTargetsPath .

Dies sollte entsprechend der von Ihnen verwendeten VS-Version angepasst werden.

STM
quelle
0

Ich sehe dies in einer VS2017-Umgebung. Mein Build-Skript wird VsDevCmd.batzuerst aufgerufen. Um dieses Problem zu lösen, habe ich die VCTargetsPathUmgebungsvariable nach VsDevCmdund vor dem Aufruf von MSBuild festgelegt:

set VCTargetsPath=%VCIDEInstallDir%VCTargets
Hugh
quelle
0

Hinzufügen zu Chris Gongs Antwort zu VS2017 / 2019 oben (ich habe noch keine Erlaubnis für Kommentare).

Wenn VS 2019 Build Tools anstelle von Visual Studio installiert sind, unterscheiden sich die Dateipfade geringfügig. VCTargetsPath sollte dann sein

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

Beachten Sie auch den abschließenden Backslash, der zumindest in meinem Fall erforderlich ist (TFS2017, VS2019 Build Tools). Entsprechende Änderung auch am PATH-Eintrag.

Lars V.
quelle
0

Ich hatte das gleiche Problem mit MSBuild für VS 17

Ich habe dies gelöst, indem ich die folgenden Schritte angewendet habe:

  • In meinem Fall befand sich die Microsoft.Cpp.Default.propsDatei unter, C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets also habe ich eine VCTragetsPathZeichenfolge in der Registrierung unter HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0mit Wert erstellt C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets

  • Ich habe meine Jenkins auch als Administrator ausgeführt

Dies löste mein Problem.

Hemant
quelle
0

Anstatt einen festen Pfad festzulegen, versuchen Sie dies zuerst in Ihrer Post-Build-Befehlszeile:

SET VCTargetsPath=$(VCTargetsPath)

Die Variable '$ (VCTargetsPath)' scheint ein c ++ - bezogenes Visual-Studio-Makro zu sein, das in c # -sdk-Projekten nicht als Makro angezeigt wird, aber dort noch verfügbar ist.

Sam
quelle