13

Me gustaría sincronizar un proyecto de VC++ 2010 con uno de VC++ 2008. ¿Es posible? Básicamente, si estoy agregando/eliminando/renombrando un archivo a un proyecto en VS2010, me gustaría que se agregue/elimine/renombre al proyecto VS2008 correspondiente. La sincronización de las opciones del proyecto también sería increíble, pero no necesaria. No necesito una sincronización a nivel de solución tampoco.Desarrollar sin problemas en ambos VC++ 2010 y VC++ 2008 en el mismo trabajo?

Editar: Se me ha sugerido que "fusione" los archivos del proyecto al momento del check-in o compilación con un script o herramienta. Desafortunadamente, el formato de archivo del proyecto VC++ ha cambiado de VS2008 a VS2010 y no tiene nada en común. Entonces mi pregunta es más como: ¿Existe alguna herramienta capaz de fusionar/convertir archivos de proyecto vc9 y vc10? Podría escribir mi propia herramienta si no hay otra manera de abordar esto.

Respuesta

6

En mi empresa tuvimos exactamente el mismo problema y elegimos usar CMake.

Al menos pruébalo en uno de tus proyectos, es la solución ideal para tu problema.

Permite describir nuestros proyectos con una sintaxis simple en archivos de texto y luego CMake genera proyectos VS2005, VS2008 y VS2010 a partir de los mismos archivos.
De esta manera, solo los archivos Cmake se modifican y todos los proyectos se actualizan al mismo tiempo.

En resumen CMake es:
1. limpia
2. descriptiva
3. nativa
4. segura

Porque:
1. Todas las opciones y configuraciones se puede leer en los archivos, no en muchos paneles de propiedades.
2. La gramática y sintaxis de CMake es fácil de leer.
3. Todos los proyectos generados son completos e independientes de CMake.
4. Puede usar un Administrador de control de fuente en los archivos CMake.

Teníamos algunas soluciones de 50 proyectos o 20 proyectos y fue mucho trabajo, y una de las razones por las que usamos CMake fue porque necesitábamos trabajar con Xcode en Mac en algunas bibliotecas cuyos proyectos son ahora comunes para VS y Xcode.
Pero hubiera valido la pena incluso para las diferentes versiones de VS solamente.

+0

esto es realmente lo que tengo conformado por. Gracias. – KeatsPeeks

1

Solo puede mantener esos archivos de solución/proyecto por separado. si escribes tu complemento, házmelo saber!

2

El control de fuente ayuda aquí. He hecho esto antes con versiones anteriores creando una rama mejorada (VS2010) y fusionando los cambios entre ella y la troncal (VS2008). Aunque ciertamente no es perfecto, funciona.

No sé si los cambios del proyecto en VS2010 lo harían mejor o peor que antes.

+0

Este proyecto está controlado por fuente con TFS, por lo que estoy muy interesado en eso. Pero no entiendo cómo podría fusionar los cambios entre un proyecto .vcproj (2008) y un .vcxproj (VC++ 2010). ¿Cómo puedo lograr eso? – KeatsPeeks

+0

Combinaría los cambios entre los dos de la misma manera que lo haría con cualquier otro archivo en TFS. – GraemeF

1

No tengo 2010 instalado en el trabajo, así que voy principalmente de la memoria aquí. Muy poco ha cambiado en el esquema del archivo de proyecto de 2005 a 2008 a 2010. En su mayor parte simplemente uso una herramienta de comparación de texto como WinDiff o BeyondCompare para resaltar los cambios y copiarlos de un archivo a otro. No he jugado con ninguno de los tipos de proyectos web, pero supongo que la mayoría de las veces la misma técnica funcionará. Como sus esquemas básicamente XML también pueden usar una herramienta de mapeo XML para hacer el mismo trabajo.

Me di cuenta cuando convertí un proyecto de código abierto que 2010 realmente no me gustó la configuración del proyecto ClickOnce. Se convertiría bien, pero me pediría que volviera a convertir cada vez que abriera el proyecto. Terminé teniendo que eliminar por completo la información de ClickOnce del archivo del proyecto para que se detuviera.

EDIT: Mi experiencia se basa principalmente en el esquema de proyecto C#, que no ha cambiado mucho con el tiempo. Como TheSamFrom1984 ha señalado, hay algunos grandes cambios en el esquema de C++ que aún no han llegado al MSDN documentation on version 10.

+2

Desafortunadamente, los archivos de proyecto VC10 y VC9 difieren por completo. – KeatsPeeks

+0

No he tenido la oportunidad de trabajar directamente con ningún archivo de proyecto VC++ últimamente, pero los esquemas XSD publicados por MS indican que no hay cambios en la estructura. ¿Dónde están las diferencias que estás viendo? –

+1

Por ejemplo, los archivos se enumeran con en vc9 y en vc10. Una diferencia muestra solo una línea común: la primera. – KeatsPeeks

6

El proyecto Gallio OSS está diseñado con VS2010, mientras que la mayoría de los colaboradores todavía usan VS2008. Para mantener los archivos *.csproj sincronizados con los archivos *.vs2010.csproj, usamos un script simple de PowerShell que ejecuta WinMerge contra cada par de archivos de proyecto. Nada complicado, pero muy útil.

Puede descargar el script en Google Code. Para ejecutarlo, simplemente escriba el siguiente comando:

@echo off 
powershell "& './Compare VS2010 Projects.ps1' -sync %*" 

Espero que ayude.

+0

Ayudaría en C#, pero los archivos de proyecto C++ no pueden combinarse ya que el diseño es completamente diferente de VC++ 2008 a VC++ 2010. Buena idea sin embargo. – KeatsPeeks

+0

Mmh ... No había visto que hablas de proyectos de VC++ y no de proyectos de C#. Entonces no sé si mi solución es realmente aplicable en su escenario. –

+0

Creo que es la mejor idea. Ahora mi pregunta se reduce a 'cómo puedo' fusionar 'entre los archivos de proyecto vc9 y vc10'. Yo podría hacer esto yo mismo con una herramienta. – KeatsPeeks

2

Creo que es una opción de línea de comandos para migrar un archivo de proyecto VS2008 a VS2010. Entonces, una opción sería solo mantener el VS2008 y regenerar los proyectos de VS2010.Las desventajas son

  • Al no ser capaz de entrar en las opciones de proyectos específicos VS2010
  • Cualquier cambio en el proyecto VS2010 será sobrescrito y no se incorpora directamente a VS20008.
+0

Pensé en eso, pero también tengo que hacer 2010-> 2008 – KeatsPeeks

1

Visual Studio 2010 admite la segmentación múltiple que le permitirá desarrollar utilizando VS2010 y reducir las herramientas de plataforma a V9 para que pueda usar las últimas herramientas para mantener un proyecto anterior. ¿Por qué no solo hacer eso?

Viene con VS2010 y VS2008 para C++ fuera de la caja, he aquí algo de información sobre settingup la cadena de herramientas VS2005

http://weblogs.asp.net/israelio/archive/2009/10/20/enable-vs-2010-multi-targeting-also-for-vs2005-c.aspx

+0

Creo que la idea no es tanto que se pueda usar una versión de compilador diferente para compilar los archivos fuente, sino que los diferentes desarrolladores en el proyecto puedan usar cualquiera que sea de los 2 IDEs que tienen (o prefieren). –

+0

En el pasado, el IDE y la versión del compilador estaban estrechamente vinculados, por lo que para compilar con VC8 necesitabas VS2k5, y para compilar con VC9 necesitas VS2k8 (ahora tenemos este problema en nuestra oficina). VS2010 permitirá a todos usar VS2010 y aún reducir a VC9, o VC8 en lugar de VC10. Lo que estoy diciendo es darles a todos 2010 y permitirles descargar más que admitir IDEs múltiples :) –

1

lo hice precisamente este nuevo cuando VS 2008 salió y nos evaluarla mientras que el resto del equipo usaba VS 2005. No quería comprometer ninguno de los nuevos archivos de proyecto de formato ya que eso lo rompería para el resto del equipo, así que escribí un pequeño script en ruby ​​que acababa de buscar. todos los archivos .vcproj y los cambiaron a _2008.vcproj. Hice lo mismo para los archivos .sln, pero también busqué las referencias a .vcproj en los archivos sln y cambié el nombre a _2008.vcproj para que haga referencia a los nuevos proyectos.

A continuación, solo cargue los nuevos archivos de solución y deje que el asistente de migración haga su trabajo (supongo que VS 2010 tiene uno igual que las versiones anteriores). Esto le permite ejecutar ambas versiones una al lado de la otra. Si alguien más en el equipo realiza algún cambio en el archivo del proyecto anterior, simplemente vuelva a ejecutar su conversión y luego el asistente debería migrar el proyecto que cambió.

Hay otra modificación que puede necesitar agregar al script que es para cambiar los campos OutputDirectory y IntermediateDirectory en el archivo vcproj para que también esté compilando en diferentes directorios. Si lo hace, significa que debería poder compilar con cualquier versión de Visual Studio en el mismo árbol fuente.

0

Debe tratar la copia VS2010 como una sucursal. Cada dos días y luego de cualquier cambio importante (Pase las pruebas pendientes, por supuesto), combine los cambios en la otra Sucursal. Esta es una práctica ampliamente adoptada y aceptada en entornos de software empresarial.

+0

Una vez más, no entiendo cómo se puede hacer eso, ya que no se puede combinar entre los proyectos vc9 y vc10 – KeatsPeeks

Cuestiones relacionadas