Lorsque j'exécute msbuild pour créer un projet vc2010, j'obtiens l'erreur suivante:
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 situé c: \ Program File (x86) \ MSBuild
- HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath défini sur $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
- lors de l'exécution de msbuild / verbosity: diag as good system montre MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath défini comme environnement au début de la construction
- définir MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath défini comme variables d'environnement dans le shell ne les fait pas apparaître comme environnement au début de la construction
Corrections tentées
- .Net 4.5 désinstallé, réparé .net 4.0
- Définissez MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath dans les variables système.
Il semble que MSBuildExtensionsPath32 n'est pas défini correctement et la configuration de MSBuildExtensionsPath n'aide pas
SET MSBuildExtensionsPath="C:\Program Files\MSBuild"
S'il vous plaît laissez-moi savoir si vous avez des idées sur ce qui bloque le réglage approprié de cette variable.
Réponses:
J'ai eu ce problème lors de la publication d'une application cocos2d-x à l'aide de leur outil de ligne de commande, qui appelle 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 ce qui suit avant d'exécuter la commande de publication cocos.py:
la source
[Environment]::SetEnvironmentVariable("VCTargetsPath", "C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140", "Machine")
Pour ceux qui n'ont pas suivi l'ordre proscrit MS (voir la réponse de Xv ), vous pouvez toujours résoudre le problème.
MSBuild utilise
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 de chaîne.Vérifiez la valeur de chaîne
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
clé. La valeur devrait = "$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
"Réparer
HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
VCTargetsPath
$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\
"Remarque:
HKLM
signifieHKEY_LOCAL_MACHINE
.la source
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
vous devriez certainement l'avoir dans regeditset VCTargetsPath=c:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\v140
J'ai eu le même problème récemment et après avoir installé différents packages dans un ordre différent, cela devenait très compliqué. Ensuite, j'ai trouvé ce repo - https://github.com/felixrieseberg/windows-build-tools
npm install --global windows-build-tools
Il installe les outils Python et VS Build nécessaires pour compiler la plupart des modules de nœuds. Cela a fonctionné un régal!
la source
--production
option.npm install --global --production windows-build-tools
Selon les instructions d'installation de node-gyp: github.com/nodejs/node-gypPour Visual Studio 2017 et 2019 sur Windows 10
Un grand nombre des réponses ici s'appliquent aux anciennes versions de Visual Studio. Ce qui a fonctionné pour moi, si j'utilisais la version communautaire de Visual Studio 2017, était de définir une variable d'environnement appelée
VCTargetsPath
et de lui donner la valeurSi vous utilisez la version communautaire de Visual Studio 2019,
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.Assurez-vous également que votre chemin MSBuild dans vos variables d'environnement pointe vers la version correcte de MSBuild si vous utilisez la version communautaire de Visual Studio 2017,
Si vous utilisez la version communautaire de Visual Studio 2019,
la source
Microsoft Visual Studio\2019\BuildTools
variantes similaires - et je suppose qu'au lieu de BuildTools et Community, vous pouvez également avoir Professional et Enterprise.vswhere.exe -products * -property installationPath
recherche toutes les combinaisons et renvoie les emplacements de tous les produits installés.'vswhere.exe' is not recognized as an internal or external command, operable program or batch file.
L'installation de la mise à jour du compilateur Microsoft Visual C ++ 2010 Service Pack 1 pour le SDK Windows 7.1 a corrigé les
MSB4019
erreurs que j'obtenais en construisant sur Windows7 x64.Le readme de cette mise à jour indique que l'ordre recommandé est
la source
Sur les systèmes 64 bits, MSBuild utilise par défaut les propriétés suivantes (où C: est SystemDrive):
Si ce n'est pas le cas, cela signifie que vous avez installé des cibles de remplacement tierces personnalisées ou que votre installation MSBuild est corrompue.
Choses à essayer:
MSBuildExtensionsPath
manuellement comme ci-dessus (notez lax86
partie sur les machines 64 bits)la source
J'ai eu ce problème sur l'édition 2015 de Visual Studio. 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" est introuvable
Je l'ai corrigé en ajoutant une chaîne
avec valeur
dans le chemin du registre
la source
MSBuild dans un outil de construction indépendant qui est souvent fourni avec d'autres outils. Il peut avoir été installé sur votre ordinateur avec .NET (anciennes versions), 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 TFS qui l'utilisera, ainsi que de la version de .NET par rapport à laquelle le code source sera compilé.
Selon la façon 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 doit pointer vers le chemin ToolSet.
Parfois, une opération telle que l'installation d'un outil laisse le registre et / ou la variable d'environnement mal définis. Les autres réponses sont toutes des variantes de leur résolution.
La seule chose que je dois ajouter est que la variable d'environnement n'a pas fonctionné pour moi lorsque j'ai laissé la fin \
la source
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 peut causer des problèmes dans différentes versions de MSBuild.
Ce fichier de registre corrige cela dans les deux cas:
la source
Rien d'autre n'a fonctionné pour moi sauf, en définissant le chemin comme:
la source
EDIT: Cela s'applique aux anciennes versions de Visual Studio / MSBuild (en particulier MSVC2015?). Avec des versions plus modernes, MSBuild est inclus dans Visual Studio Build Tools 2019, et les compilateurs sont situés à différents endroits et détectés de différentes manières.
Cela est dû à une incompatibilité des ensembles d'outils MSBuild installés et des paramètres de registre. Cela peut arriver si vous avez effectué une ou plusieurs des actions suivantes:
La seule solution sûre et fiable consiste à réinstaller votre système d'exploitation. Si votre projet a besoin de plusieurs versions de Visual Studio pour générer, installez d'abord la version la plus ancienne . Ensuite, corrigez votre code afin de pouvoir utiliser un seul outil pour le créer, ou vous ou vos collègues serez à nouveau dans le même désordre bientôt.
Si ce n'est pas une option pour vous, lisez d'abord https://stackoverflow.com/a/41786593/2279059 pour une meilleure compréhension du problème et de ce que font réellement les différentes «solutions». 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 autres indices:
la source
L'installation de 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à installé VS 2010 et VS 2010 SP1. Comme mentionné par Xv ci-dessus, le fichier readme.htm contient des solutions pour les problèmes d'installation les plus courants dans la section «Problèmes connus». Je suivrais les instructions du readme.htm et redémarrerais votre machine après chaque tentative de dépannage car certaines installations écrivent dans votre registre.
la source
Dans mon cas, j'ai ajouté une variable d'environnement
VCTargetPath
avec chemin('\' à la fin est crucial, car les fichiers de solution du projet ont une référence au fichier "Microsoft cpp target".
De plus, à partir de Visual Studio 2017, MSBUILD vient avec Visual Studio - donc, les
PATH variable
besoins doivent être mis à jour avecLa mise à jour
VCTargetPath
et lesPATH
variables de MSBUILD et la construction ont corrigé l'erreur.la source
Je suis tombé sur cette erreur en écrivant un script de construction qui mettrait MSBuild sur le% PATH% après avoir fouillé de manière récursive dans le dossier C: \ Windows \ Microsoft.NET pour tous les fichiers MSBuild.exe trouvés. Le dernier hit trouvé était le répertoire placé sur le chemin. Étant donné que la
dir
commande atteindrait leFramework64
dossier aprèsFramework
avoir obtenu l'un des MSBuild 64 bits mis sur mon chemin. J'essayais de créer une solution Visual Studio 2010 et j'ai fini par modifier ma chaîne de recherche deC:\Windows\Microsoft.NET
àC:\Windows\Microsoft.NET\Framework
afin que je me retrouve avec un MSBuild.exe 32 bits. Maintenant, mon fichier de solution se construit.la source
Je viens d'ajouter en
VCTargetsPath={c:\...}
tant que variable d'environnement à mon travail Hudson.la source
Pour mémoire, le fichier
Microsoft.Cpp.Default.props
peut modifier la variable d'environnementVCTargetsPath
et rendre les utilisations ultérieures de cette variable incorrectes. J'ai eu ce problème et je l'ai résolu en définissantVCTargetsPath10
etVCTargetsPath11
à la même valeur queVCTargetsPath
.Cela doit être adapté en fonction de la version VS que vous utilisez.
la source
Je vois cela dans un environnement VS2017. Mon script de construction appelle d'
VsDevCmd.bat
abord, et pour résoudre ce problème, j'ai défini laVCTargetsPath
variable d'environnement aprèsVsDevCmd
et avant d'appeler MSBuild:la source
Ajout de la réponse de Chris Gong sur VS2017 / 2019 ci-dessus (je n'ai pas encore l'autorisation de commentaires).
Si VS 2019 Build Tools est installé plutôt que le Visual Studio complet, les chemins d'accès aux fichiers sont légèrement différents. VCTargetsPath doit alors être
Notez également la barre oblique inverse de fin - requise au moins dans mon cas (outils de construction TFS2017, VS2019). Modification correspondante de l'entrée PATH également.
la source
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
Microsoft.Cpp.Default.props
fichier était situé àC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
, j'ai donc créé uneVCTragetsPath
chaîne dans le registre sousHKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
avec valeurC:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
J'ai également fait fonctionner mon Jenkins en tant qu'utilisateur administrateur
Cela a résolu mon problème.
la source
Au lieu de définir un chemin fixe, essayez d'abord ceci dans votre ligne de commande post-build:
La variable '$ (VCTargetsPath)' semble être une macro visual-studio-macro liée à C ++ qui n'est pas affichée dans c # -sdk-projects comme une macro mais qui y est toujours disponible.
la source