2012-04-20 7 views
15

Mi compañero y yo compartimos una solución de C++ mediante subversión.Compartir una solución de C++ entre Visual Studio 2010 y 11

Él está utilizando Visual Studio 11 y estoy usando Visual Studio 2010.

Después de la primera vez que se compromete y me actualiza, me sale el siguiente error:

Error 31 error MSB8008: Specified platform toolset (v110) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected.

también, en archivos de cabecera me sale el siguiente error en #include <stdio.h>:

error: cannot open source file "stdio.h"

Supongo que es un problema de compatibilidad. ¿Cómo podemos resolver esto?

+0

debe usar algo como CMake y cada uno generar su propia solución para la versión VS deseada – relaxxx

Respuesta

30

En Visual Studio 11 hay una opción de propiedad que le permite especificar el conjunto de herramientas de la plataforma.

plataforma conjunto de herramientas v110 se utiliza por defecto si se crea un nuevo proyecto a partir de Visual Studio 11, pero si puede cambiar a v100 que es el utilizado por Visual Studio 2010.

Toolset option

+0

Cuando abre un proyecto existente de 2010 en VC++ 2012 por primera vez, establecerá "de manera útil" el conjunto de herramientas de la plataforma en v110. Así es como llegué a esta Q y A en Stackoverflow, tratando de descubrir cómo VC++ 2012 rompió mi proyecto a pesar de publicitar un "viaje redondo sin interrupciones". El mensaje de error solo me indicaba que especificara el conjunto de herramientas de plataforma correcto sin dar ninguna indicación sobre lo que eso significa o cómo especificarlo. Por supuesto, la documentación de Microsoft fue inútil. Pero buscar en Google DuckDuckGo.com y hacer clic en el hit Stackoverflow salvó el día. –

+0

P.s. ¿Quién sabía que algunos viajes redondos tienen costuras? En cualquier caso, el elemento Platform Toolset aparece en VS 2010, y volver a establecerlo en v100 funcionó perfectamente. –

+2

Tenga en cuenta que restablecerlo a v100 exige que se instale VS2010. – JohnW

3

Los archivos .sln y .vcxproj guardados en Visual Studio 11 no son compatibles con versiones anteriores de VS2010. Incluso si fueran compatibles, eventualmente cruzaría un código que es compilable en VS11 pero no en VS10.

La mejor (y probablemente la única) forma es acordar utilizar exactamente el mismo entorno de desarrollo.

+1

Según tengo entendido, si tiene actualizaciones automáticas ejecutándose, Microsoft parchó el VC2010 para que él y VC2012 usaran los mismos formatos.Veo "Platform Toolset" ahora en VC++ 2010, y no recuerdo haberlo visto allí antes. –

0

Un un poco tarde en la discusión, pero ya que está utilizando el control de fuente, puede eliminar los archivos de proyecto y solución del repositorio y simplemente compartir el código fuente. Obviamente, si agrega nuevos módulos y tal a un proyecto, deberá agregarlos manualmente en la otra solución, pero al menos no tendrá que preocuparse por esta incompatibilidad. Si desea acceder a él, la aplicación se puede construir desde la línea de comandos utilizando solo el compilador y los conmutadores del enlazador, que tienden a ser mucho más compatibles entre las revisiones. Finalmente, podría usar otra herramienta de compilación (además de MSBuild), que sigue siendo compatible en todas las versiones de estudio.

Si decide eliminar la solución y los archivos del proyecto, una cosa a tener en cuenta es guardar una copia del YourApp.sln original como YourApp.sln.2010. Luego, tendrá algo de lo que generar soluciones futuras, pero las actualizaciones de los proyectos y las soluciones se realizarán desde VS 2010 y el archivo se copiará a su versión .2010 y se actualizará manualmente.

Si SVN tiene soporte para parches, o si está dispuesto a ejecutar colcha externamente (o si cambia a mercurial, puede usar las extensiones MQ), puede crear los archivos parche para convertir de 2010 a 2011 y eliminar el parche de actualización antes de la sincronización.

0

La solución de Drake no funcionó porque las propiedades para todos los proyectos en la solución ya estaban configuradas correctamente en v100. Sin embargo, la solución que sí funcionó fue limpiar las compilaciones y eliminar todos los demás archivos que no eran archivos fuente o proyectos. Creo que probablemente estaba eliminando los archivos projname.vcxproj.user que lo arreglaron, ya que tal vez la preferencia toolchain fue de alguna manera anulada en las preferencias del usuario.

Cuestiones relacionadas