¿Por qué se ve MSBuild en C: \ para Microsoft.Cpp.Default.props en lugar de c: \ Archivos de progtwig (x86) \ MSBuild? (error MSB4019)

Cuando ejecuto msbuild para construir un proyecto vc2010, aparece el siguiente error:

error MSB4019: The imported project "C:\Microsoft.Cpp.Default.props" was not found. Confirm that the path in the  declaration is correct, and that the file exists on disk. 
  • msbuild ubicado c: \ Program File (x86) \ MSBuild
  • HKLM \ SOFTWARE \ Wow6432Node \ Microsoft \ MSBuild \ ToolVersions \ V4.0 VCTargetsPath establecido en $ (MSBuildExtensionsPath32) \ Microsoft.Cpp \ v4.0 \
  • al ejecutar msbuild / verbosity: diag como buen sistema muestra MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath establecido como Entorno al inicio de la comstackción
  • establecer MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath establecido como variables de entorno en shell no hace que se muestren como Entorno al inicio de la comstackción

Soluciones intentadas

  • Desinstalado .net 4.5, reparado .net 4.0
  • Establezca MSBuildExtensionsPath32, MSBuildExtensionsPath64, MSBuildExtensionsPath en las variables del sistema.

Parece que MSBuildExtensionsPath32 no se está configurando correctamente y establecer MSBuildExtensionsPath no ayuda

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

Por favor, avíseme si tiene alguna idea de lo que bloquea la configuración adecuada de esta variable.

Obtuve este problema al publicar una aplicación cocos2d-x usando su herramienta de línea de comandos, que llama a MSBuild. Estoy usando Win 7 de 64 bits, VS2013 express, cocos2d-x versión 3.3, .NET Framework 4.5 instalado.

Solucioné el problema estableciendo lo siguiente antes de ejecutar el comando de publicación cocos.py:

 SET VCTargetsPath=C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120 

Para aquellos que no siguieron el orden de MS proscrito (ver la respuesta de Xv ) aún puede solucionar el problema.

MSBuild utiliza VCTargetsPath para localizar las propiedades predeterminadas de cpp pero no puede porque el registro carece de este valor de cadena.

Verificar el valor de cadena

  • Lanzar regedit
  • Navegador a HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Inspeccione la clave VCTargetsPath . El valor debería = ” $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\

Arreglar

  • Inicie el navegador regedit a HKLM\SOFTWARE\Microsoft\MSBuild\ToolsVersions\4.0
  • Agregar valor de cadena VCTargetsPath
  • Establecer valor en ” $(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\

Nota: HKLM significa HKEY_LOCAL_MACHINE .

He tenido el mismo problema recientemente y después de instalar diferentes paquetes en diferente orden, se estaba volviendo muy complicado. Luego encontré este informe: https://github.com/felixrieseberg/windows-build-tools

npm install --global windows-build-tools

Instala las herramientas Python y VS Build que se requieren para comstackr la mayoría de los módulos de nodos. Funcionó un placer!

Instalar Microsoft Visual C ++ 2010 Service Pack 1 Actualización del comstackdor para Windows SDK 7.1 corrigió los errores MSB4019 que estaba construyendo en Windows7 x64.

El archivo léame de esa actualización indica que el orden recomendado es

  1. Visual Studio 2010
  2. Windows SDK 7.1
  3. Visual Studio 2010 SP1
  4. Actualización del comstackdor de Visual C ++ 2010 SP1 para Windows SDK 7.1

En los sistemas de 64 bits, MSBuild se establece de manera predeterminada en las siguientes propiedades (donde C: es SystemDrive):

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

De lo contrario, significa que tiene instalados algunos destinos de anulación de terceros personalizados o que la instalación de MSBuild está dañada.

Cosas para intentar:

  • Reparar la instalación de .NET
  • Aplicar el último Service Pack de Visual Studio
  • Establezca MSBuildExtensionsPath manualmente como se MSBuildExtensionsPath anteriormente (observe la parte x86 en máquinas de 64 bits)

La instalación de la actualización del comstackdor de Microsoft Visual C ++ 2010 Service Pack 1 para Windows SDK 7.1 funcionó para mí. Sin embargo, tuve problemas con la actualización porque ya tenía VS 2010 y VS 2010 SP1 instalados. Como se mencionó anteriormente en Xv , el archivo readme.htm contiene soluciones para los problemas de instalación más comunes en la sección “Problemas conocidos”. Seguiría las instrucciones en el archivo readme.htm y reiniciaré su máquina después de cada bash de solución de problemas porque algunas instalaciones escriben en su registro.

Tuve este problema en la edición de Visual Studio 2015. Cuando utilicé cmake para generar un proyecto, apareció este error.

error MSB4019: no se encontró el proyecto importado “D: \ Microsoft.Cpp.Default.props”

Lo arreglé agregando un String

VCTargetsPath

con valor

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

en la ruta de registro

HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 14.0

Las entradas de registro para la clave MSBuild funcionaron bien para mí. Es importante recordar que se debe hacer para las twigs de 64 bits o 32 bits dependiendo de la versión de MSBuild que ejecute. No recomendaría usar variables de entorno ya que puede causar problemas en diferentes versiones de MSBuild.

Este archivo de registro corrige eso para ambos casos:

 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\\'))" 

MSBuild en una herramienta de comstackción independiente que se incluye frecuentemente con otras herramientas. Puede haber sido instalado en su computadora con .NET (versiones anteriores), Visual Studio (versiones más recientes) o incluso Team Foundation Build.

MSBuild necesita archivos de configuración, comstackdores, etc. (un ToolSet) que coincida con la versión de Visual Studio o TFS que lo usará, así como la versión de .NET con la que se comstackrá el código fuente.

Dependiendo de cómo se instaló MSBuild, los archivos de configuración pueden estar en una o más de estas rutas.

  • C: \ Archivos de progtwig (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \
  • C: \ Archivos de progtwig (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120 \
  • C: \ Archivos de progtwig (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140 \

Como se describe en otras respuestas, un elemento de registro y / o un punto de variable ambiental debe ir a la ruta del ToolSet.

  • La clave VCTargetsPath en HKLM \ SOFTWARE \ Microsoft \ MSBuild \ ToolsVersions \ 4.0
  • La variable de entorno VCTargetsPath.

Ocasionalmente, una operación como instalar una herramienta dejará la variable de registro y / o ambiental configurada incorrectamente. Las otras respuestas son todas variaciones sobre cómo arreglarlas.

Lo único que tengo que agregar es que la variable ambiental no funcionó para mí cuando dejé el final \

Me encontré con este error al escribir un script de comstackción que pondría MSBuild en% PATH% después de buscar recursivamente a través de la carpeta C: \ Windows \ Microsoft.NET para encontrar cualquier archivo MSBuild.exe. El último hit encontrado fue el directorio que se puso en el camino. Dado que el comando dir golpearía la carpeta Framework64 después de Framework I estaba poniendo uno de los MSBuilds de 64 bits en mi camino. Estaba intentando construir una solución de Visual Studio 2010 y terminé alterando mi cadena de búsqueda de C:\Windows\Microsoft.NET a C:\Windows\Microsoft.NET\Framework para que terminara con un MSBuild.exe de 32 bits. Ahora mi archivo de solución se construye.

Acabo de agregar VCTargetsPath={c:\...} como una variable de entorno para mi trabajo de Hudson.

Para el registro, el archivo Microsoft.Cpp.Default.props puede modificar el env var VCTargetsPath y hacer que los usos posteriores de esa VCTargetsPath sean incorrectos. Tuve ese problema y lo resolví estableciendo VCTargetsPath10 y VCTargetsPath11 en el mismo valor que VCTargetsPath .

Esto debe adaptarse de acuerdo con la versión de VS que esté utilizando.

Estoy viendo esto en un entorno VS2017. Mi script de construcción llama primero a VsDevCmd.bat , y para resolver este problema establecí la variable de entorno VsDevCmd después de VsDevCmd y antes de llamar a MSBuild:

 set VCTargetsPath=%VCIDEInstallDir%VCTargets