No se encontró "C: \ Microsoft.Cpp.Default.props"

81

Tengo un proyecto creado en Visual Studio, 2013.

El archivo del proyecto tiene las siguientes propiedades:

ToolsVersion = "12.0", PlatformToolset = v120.

Tengo instaladas Visual Studio 2013 y Microsoft Build Tools 2015. Este proyecto se compila con éxito con MSBuild 12.0. Al intentar construirlo con MSBuild 14.0, aparece un 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. 

Según tengo entendido, el problema es que la variable VCTargetsPath no se evalúa. Si especifico la variable VCTargetsPath antes de la compilación (con el valor C: \ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V120), el problema está resuelto.

Sin embargo, este enfoque no es muy conveniente en caso de que el camino sea diferente. ¿Es posible resolver el problema de alguna manera de una manera más óptima?

La clave de registro y su valor:

HKLM\Software\WOW6432Node\Microsoft\MSBuild\ToolsVersions\12.0\VCTargetsPath $([MSBuild]::ValueOrDefault('$(VCTargetsPath)','$(MSBuildExtensionsPath32)\Microsoft.Cpp\v4.0\V120\'))
Serg
fuente
Tras el intento de construirlo con MSBuild 14.0, ¿cómo lo hace exactamente? Probablemente debería llamar vcvars.bat (o equivalente para herramientas de construcción 2015) primero ..
Stijn
De acuerdo con stijn, configure la ruta y las variables de entorno para las compilaciones de la línea de comandos a través de vcvars.bat y verifique si funciona para usted. Para obtener más información sobre cómo establecer la ruta y las variables de entorno para las compilaciones de línea de comandos, consulte: msdn.microsoft.com/en-us/library/f2ccy3wt.aspx
Zhanglong Wu - MSFT

Respuestas:

61

Me tomó dos horas solucionar este problema, pero finalmente terminé.

Lo siguiente resolvió mi problema:

  1. Ejecutar esto en un sistema elevado pronta (admin): npm install --global --production windows-build-tools. Si no tiene npm, le recomiendo instalarlo, de lo contrario, no funcionará.
  2. Cambie la propiedad en el directorio de instalación (en mi caso C:\Program Files (x86)\MSBuild\14.0) a su usuario, en lugar de administrador. (propiedades> Seguridad> Avanzado).
Nic Szerman
fuente
9
Gracias. Solo necesitaba (re) correr npm install -g --production windows-build-tools.
Dan Atkinson
@Nic Szer, ¿puedes explicarme el segundo paso? No puedo entenderlo.
Harshit Agrawal
@NicSzer en mi caso veo Propietario: SISTEMA, ¿qué debo hacer?
Harshit Agrawal
@HarshitAgrawal, debe cambiar quién es el propietario de la carpeta de modo que su usuario sea el propietario, no el SISTEMA
Nic Szerman
@NicSzer gracias por la respuesta. Hice eso, pero ahora tengo nuevos errores. Esta es la primera vez que intento ejecutar el proyecto nativo de reacción en Windows. Necesito ayuda. ¿Podemos conectarnos en la sala de chat de stackoverflow?
Harshit Agrawal
30

Recientemente reinstalé Visual Studio 2017 y encontré este problema al intentar instalar "npm java". La solución para mí es:

  1. establecer la versión de ms en 2017: npm config set msvs_version 2017
  2. establezca la variable de entorno VCTargetsPath en C:\Program Files (x86)\Microsoft Visual Studio\2017\BuildTools\Common7\IDE\VC\VCTargets
  3. ejecutar la consola de comandos como administrador del sistema
Alex
fuente
3
npm config set msvs_version 2017este código me salvó las horas. Gracias.
canmustu
@Alex, ¿ VCTargetsya contenía tu directorio Microsoft.Cpp.Default.Props? Tengo el directorio pero falta ese archivo.
starscream_disco_party
@starscream_disco_party sí, Microsoft.Cpp.Default.Props ya está en mi carpeta VCTargets
Alex
22

Estos pasos resolvieron mi problema:

  1. correr npm install --global --production windows-build-tools
  2. correr npm install --save nan
  3. Establezca VCTargetsPathla variable de entorno enC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
Emre Tapcı
fuente
2
¿Dónde se encuentra VCTargetsPath?
Harshit Agrawal
Solución perfecta
Hammad ul Hasan
1
@HarshitAgrawal VCTargetsPathes el nombre de la variable de entorno.
Emre Tapcı
El tercer paso solo es necesario en mi caso.
Sergei
10

Para aquellos que la respuesta anterior no funciona, aquí hay otra posible solución a considerar.

Incluso la instalación de herramientas de compilación o VS 2015 no funcionó para mí. Así que intenté instalar a continuación directamente a través de PowerShell (como administrador)

https://chocolatey.org/packages/visualcpp-build-tools/14.0.25420.1 Comando: choco install visualcpp-build-tools --version 14.0.25420.1

Una vez instalado, configure una variable de entorno VCTargetsPath = C: \ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ v140

Sorabh Mendiratta
fuente
Usar Chocolatey lo resolvió por mí, ni siquiera configuré la variable de entorno, funcionó de inmediato
Meir Gabay
9

Para aquellos que usan VS 2019:

establecer VCTargetsPath = "C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2019 \ Professional \ MSBuild \ Microsoft \ VC \ v160"

Editar (septiembre de 2020): a veces requiere una barra invertida al final (como bmiller se menciona a continuación)

TheRennen
fuente
1
Esto funcionó para mí. Tenga en cuenta que también necesitaba una barra diagonal inversa al final de la ruta, de lo contrario, la compilación falló al buscar accesorios de plataforma específicos en una subcarpeta.
bmiller
También funcionó para mí, aunque debe asegurarse de haber especificado la versión de VS adecuada (en mi caso, era Community - "C: \ Archivos de programa (x86) \ Microsoft Visual Studio \ 2019 \ Community \ MSBuild \ Microsoft \ VC \ v160 "
g0rski
5

Resolví esto por:

  1. Establezca VCTargetsPathla variable de entorno enC:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V140
  2. construir usando admin
PytLab
fuente
0

Probé npm install y VCTargetsPath, no todo funciona. Finalmente resuelto después de actualizar Visual Studio a la última versión.

PaaSFly
fuente
0

Se resuelve instalando Visual Studio Express 2015 para Windows 10 .

Patapoom
fuente
Pasar de Express a Pro causó el problema en mi caso. Establezca la variable de entorno VCTargetsPath en C: \ Archivos de programa (x86) \ MSBuild \ Microsoft.Cpp \ v4.0 \ V140
Sergei
0

No pude hacer que funcione con todas las sugerencias de esta página

Bajé nodejs a 10.15 y funcionó bien

probablemente no sea la mejor respuesta, pero funciona

phil123456
fuente
0

Resolví el problema cargando la solución en VS 2019 en lugar de hacer doble clic en el nombre de la solución en el Explorador de archivos.

gerritvn
fuente
0

Al ejecutar MSBuild fuera de Visual Studio 2019 (migrado desde 2012), tuve este tipo de problemas. Los resolví ejecutando este MSBuild:

"C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\MSBuild\Current\Bin\msbuild"

(personalícelo según su versión de VS y la arquitectura de destino) en lugar de esta:

C:\Windows\Microsoft.NET\Framework\v4.0.30319\msbuild

que estaba usando cuando tenía Visual Studio 2012.

azulado
fuente
-1

Asegúrese de usar --global con el comando para poder usar este paquete en cualquier lugar. Esto me resuelve el problema

Kareem Khaleel
fuente