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.
Antworten:
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:
quelle
[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
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
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
Schlüssel prüfen . Der Wert sollte = "$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
"Reparieren
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
"Hinweis:
HKLM
steht fürHKEY_LOCAL_MACHINE
.quelle
set VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0
VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v120
HKEY_LOCAL_MACHINE
Sie sollten es auf jeden Fall in regedit habenset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
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!
quelle
--production
Option.npm install --global --production windows-build-tools
Gemäß den Installationsanweisungen für Node-Gyp: github.com/nodejs/node-gypFü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
VCTargetsPath
und dem Wert " Festlegen" festzulegenWenn Sie die Visual Studio 2019 Community-Version verwenden,
Andere Antworten hier setzen diese Variable auf,
c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
aber 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.
Wenn Sie die Community-Version von Visual Studio 2019 verwenden,
quelle
Microsoft Visual Studio\2019\BuildTools
oder ähnliche Variationen sein - und ich nehme an, anstelle von BuildTools und Community könnten Sie auch Professional und Enterprise haben.vswhere.exe -products * -property installationPath
sucht nach allen Kombinationen und gibt die Speicherorte aller installierten Produkte zurück.'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
Durch die Installation des Microsoft Visual C ++ 2010 Service Pack 1-Compiler-Updates für Windows SDK 7.1 wurden die
MSB4019
Fehler behoben, die beim Erstellen von Windows 7 x64 auftraten.In der Readme-Datei dieses Updates wird angegeben, dass die empfohlene Reihenfolge lautet
quelle
Auf 64-Bit-Systemen verwendet MSBuild standardmäßig die folgenden Eigenschaften (wobei C: SystemDrive ist):
Wenn dies nicht der Fall ist, sind entweder einige benutzerdefinierte Überschreibungsziele von Drittanbietern installiert, oder Ihre MSBuild-Installation ist beschädigt.
Dinge zu versuchen:
MSBuildExtensionsPath
manuell wie oben (beachten Sie dasx86
Teil auf 64-Bit - Maschinen)quelle
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
mit Wert
im Registrierungspfad
quelle
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.
Wie in anderen Antworten beschrieben, muss ein Registrierungselement und / oder eine Umgebungsvariable auf den ToolSet-Pfad verweisen.
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
quelle
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:
quelle
Nichts anderes hat für mich funktioniert, außer den Pfad wie folgt festzulegen:
quelle
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:
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:
quelle
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.
quelle
In meinem Fall habe ich eine Umgebungsvariable
VCTargetPath
mit Pfad hinzugefügt('\' 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 variable
muss das mit aktualisiert werdenDas Aktualisieren
VCTargetPath
und Erstellen von MSBUILD-PATH
Variablen sowie das Erstellen des Fehlers haben den Fehler behoben.quelle
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
dir
Befehl denFramework64
Ordner treffen würde, nachdemFramework
ich 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 vonC:\Windows\Microsoft.NET
auf geändert ,C:\Windows\Microsoft.NET\Framework
sodass ich eine 32-Bit-MSBuild.exe erhalten habe. Jetzt wird meine Lösungsdatei erstellt.quelle
Ich habe gerade
VCTargetsPath={c:\...}
meinen Hudson-Job als Umgebungsvariable hinzugefügt .quelle
Für den Datensatz kann die Datei
Microsoft.Cpp.Default.props
die env var ändernVCTargetsPath
und nachfolgende Verwendungen dieser var falsch machen. Ich hatte dieses Problem und löste es durch EinstellenVCTargetsPath10
undVCTargetsPath11
auf den gleichen Wert alsVCTargetsPath
.Dies sollte entsprechend der von Ihnen verwendeten VS-Version angepasst werden.
quelle
Ich sehe dies in einer VS2017-Umgebung. Mein Build-Skript wird
VsDevCmd.bat
zuerst aufgerufen. Um dieses Problem zu lösen, habe ich dieVCTargetsPath
Umgebungsvariable nachVsDevCmd
und vor dem Aufruf von MSBuild festgelegt:quelle
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
Beachten Sie auch den abschließenden Backslash, der zumindest in meinem Fall erforderlich ist (TFS2017, VS2019 Build Tools). Entsprechende Änderung auch am PATH-Eintrag.
quelle
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.props
Datei unter,C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
also habe ich eineVCTragetsPath
Zeichenfolge in der Registrierung unterHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
mit Wert erstelltC:\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.
quelle
Anstatt einen festen Pfad festzulegen, versuchen Sie dies zuerst in Ihrer Post-Build-Befehlszeile:
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.
quelle