Lorsque j'exécute msbuild pour construire un projet vc2010, l'erreur suivante apparaît:
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.
Corrections tentées
Il semble que MSBuildExtensionsPath32 ne soit pas défini correctement et que définir MSBuildExtensionsPath n’aide en rien.
SET MSBuildExtensionsPath="C:\Program Files\MSBuild"
S'il vous plaît laissez-moi savoir si vous avez des idées ce qui bloque le réglage correct de cette variable.
Pour ceux qui n'ont pas suivi l'ordre interdit MS (voir Réponse de Xv ), vous pouvez toujours résoudre le problème.
MSBuild utilise la variable VCTargetsPath
pour localiser les propriétés cpp par défaut, mais ne le peut pas car le registre ne dispose pas de cette valeur chaîne.
Vérifier la valeur de chaîne
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
. La valeur devrait = "$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
" Pour réparer
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
" Remarque: HKLM
signifie HKEY_LOCAL_MACHINE
.
J'ai eu ce problème lors de la publication d'une application cocos2d-x à l'aide de leur outil de ligne de commande, appelé MSBuild. J'utilise Win 7 64 bits, VS2013 Express, cocos2d-x version 3.3, .NET Framework 4.5 installé.
J'ai résolu le problème en définissant les éléments suivants avant d'exécuter la commande de publication cocos.py:
SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120
J'ai eu le même problème récemment et après avoir installé différents paquets dans un ordre différent, tout devenait très sale. Ensuite, j'ai trouvé ce dépôt - https://github.com/felixrieseberg/windows-build-tools
npm install --global windows-build-tools
Il installe les outils de compilation Python & VS nécessaires à la compilation de la plupart des modules de nœud. Cela a fonctionné un régal!
Installation La mise à jour du compilateur Microsoft Visual C++ 2010 Service Pack 1 pour le SDK Windows 7.1 a corrigé les erreurs MSB4019
que je compilais sur Windows 7 x64.
Le fichier Lisez-moi de cette mise à jour indique que l'ordre recommandé est
Sur les systèmes 64 bits, MSBuild utilise par défaut les propriétés suivantes (où C: est SystemDrive):
MSBuildExtensionsPath = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath32 = C:\Program Files (x86)\MSBuild
MSBuildExtensionsPath64 = C:\Program Files\MSBuild
Si ce n'est pas le cas, cela signifie que des cibles de substitution tierces personnalisées sont installées ou que votre installation de MSBuild est corrompue.
Choses à essayer:
MSBuildExtensionsPath
manuellement comme ci-dessus (notez la partie x86
sur les ordinateurs 64 bits)J'ai eu ce problème sur l'édition Visual Studio 2015. Lorsque j'ai utilisé cmake pour générer un projet, cette erreur est apparue.
erreur MSB4019: le projet importé "D:\Microsoft.Cpp.Default.props" n'était pas trouvé
Je l'ai corrigé en ajoutant une chaîne
VCTargetsPath
avec valeur
$ (MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V140
dans le chemin du registre
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\14.0
MSBuild dans un outil de construction indépendant qui est souvent associé à d'autres outils. Il a peut-être été installé sur votre ordinateur avec .NET (versions antérieures), Visual Studio (versions plus récentes) ou même Team Foundation Build.
MSBuild a besoin de fichiers de configuration, de compilateurs, etc. (un ToolSet) qui correspond à la version de Visual Studio ou de TFS qui l'utilisera, ainsi qu'à la version de .NET avec laquelle le code source sera compilé.
Selon la manière dont MSBuild a été installé, les fichiers de configuration peuvent se trouver dans un ou plusieurs de ces chemins.
Comme décrit dans d'autres réponses, un élément de registre et/ou une variable d'environnement doivent être dirigés vers le chemin ToolSet.
Parfois, une opération telle que l’installation d’un outil laisse le jeu de variables de registre et/ou d’environnement incorrect. Les autres réponses sont toutes des variantes pour les corriger.
La seule chose que je dois ajouter, c’est que la variable environnementale ne m’a pas fonctionné lorsque j’ai quitté la fin du fichier \
L'installation La mise à jour du compilateur Microsoft Visual C++ 2010 Service Pack 1 pour le SDK Windows 7.1 a fonctionné pour moi. Cependant, j'ai rencontré des problèmes avec la mise à jour car j'avais déjà VS 2010 et VS 2010 SP1 installé. Comme mentionné par Xv ci-dessus, le fichier readme.htm contient des solutions aux problèmes d’installation les plus courants dans la section "Problèmes connus". Je voudrais suivre les instructions du fichier readme.htm et redémarrer votre ordinateur après chaque tentative de dépannage, car certaines installations écrivent dans votre base de registre.
Rien d’autre n’a fonctionné pour moi, si ce n’est en définissant le chemin:
C:\Program Files\Microsoft Visual Studio\2017\BuildTools\MSBuild\15.0
Les entrées de registre pour la clé MSBuild ont bien fonctionné pour moi. Il est important de se rappeler que cela doit être fait pour les branches 64 bits ou 32 bits selon la version de MSBuild que vous exécutez. Je ne recommanderais pas d'utiliser des variables d'environnement car cela pourrait causer des problèmes dans différentes versions de MSBuild.
Ce fichier de registre corrige cela dans les deux cas:
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\\'))"
La plupart des réponses proposées ici s'appliquent aux anciennes versions de Visual Studio. Ce qui a fonctionné pour moi a été de définir une variable d’environnement appelée VCTargetsPath
et de lui donner une valeur de
C:\Program Files (x86)\Microsoft Visual Studio\2017\Community\Common7\IDE\VC\VCTargets
D'autres réponses ici définissent cette variable sur c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
mais j'ai remarqué que dans mon installation de Visual Studio, il n'y avait pas de dossier appelé Microsoft.Cpp dans mon dossier MSBuild. Gardez donc cela à l'esprit, ainsi que le fait que le chemin ci-dessus concerne la version communautaire de Visual Studio 2017. Dommage, cette réponse sera également bientôt obsolète avec la sortie de Visual Studio 2019 dans les prochains mois.
Je viens d'ajouter VCTargetsPath={c:\...}
comme variable d'environnement à mon travail Hudson.
J'étais confronté au même problème avec MSBuild pour VS 17
J'ai résolu ce problème en appliquant les étapes suivantes:
Dans mon cas, le fichier Microsoft.Cpp.Default.props
était situé à C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
et j'ai donc créé la chaîne VCTragetsPath
dans le registre sous HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
avec la valeur C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
.
J'ai aussi fait fonctionner mon Jenkins en tant qu'utilisateur administrateur
Cela a résolu mon problème.
Je vois cela dans un environnement VS2017. Mon script de génération appelle d'abord VsDevCmd.bat
, et pour résoudre ce problème, je définis la variable d'environnement VCTargetsPath
après VsDevCmd
et avant d'appeler MSBuild:
set VCTargetsPath=%VCIDEInstallDir%VCTargets
Ajout à la réponse de Chris Gong à propos de VS2017/2019 ci-dessus (je n'ai pas encore de permission pour les commentaires).
Si les outils de génération VS 2019 sont installés plutôt que Visual Studio complet, les chemins de fichiers sont légèrement différents. VCTargetsPath devrait alors être
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Microsoft\VC\v160\
Notez également la barre oblique inverse de fin - obligatoire au moins dans mon cas (outils de compilation TFS2017, VS2019). Modification correspondante de l'entrée PATH également.
Cela est dû à une incompatibilité des jeux d'outils MSBuild et des paramètres de registre installés. Cela peut arriver si vous avez effectué l'une ou plusieurs des actions suivantes:
La seule solution sûre et fiable consiste à réinstaller votre système d'exploitation. Si votre projet nécessite plusieurs versions de Visual Studio pour être généré, installez la version la plus ancienne en premier Corrigez ensuite votre code afin que vous puissiez le créer à l'aide d'un seul outil. Sinon, vous ou vos collègues vous retrouverez bientôt dans le même pétrin.
Si ce n’est pas une option pour vous, commencez par lire https://stackoverflow.com/a/41786593/2279059 pour une meilleure compréhension du problème et de ce que les différentes "solutions" font réellement. Ensuite, en fonction de votre version et de votre configuration de Visual Studio, l’une des autres réponses ou variantes de celles-ci peut éventuellement vous aider.
Quelques astuces supplémentaires:
Je suis tombé sur cette erreur en écrivant un script de construction qui placerait MSBuild sur le% PATH% après avoir fouillé récursivement dans le dossier C:\Windows\Microsoft.NET pour tous les fichiers MSBuild.exe trouvés. Le dernier accès trouvé était le répertoire mis sur le chemin. Étant donné que la commande dir
allait frapper le dossier Framework64
après Framework
, un des fichiers MSBuild 64 bits était placé sur mon chemin. J'essayais de créer une solution Visual Studio 2010 et je me suis retrouvé à modifier ma chaîne de recherche de C:\Windows\Microsoft.NET
à C:\Windows\Microsoft.NET\Framework
afin de me retrouver avec un fichier MSBuild.exe 32 bits. Maintenant, mon fichier de solution est construit.
Pour l'enregistrement, le fichier Microsoft.Cpp.Default.props
peut modifier l'env var VCTargetsPath
et rendre les utilisations ultérieures de cette var incorrect . J'ai eu ce problème et je l'ai résolu en définissant VCTargetsPath10
et VCTargetsPath11
avec la même valeur que VCTargetsPath
.
Cela devrait être adapté en fonction de la version du VS que vous utilisez.