Pregunta

Me gustaría sincronizar un proyecto VC ++ 2010 con uno 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 / cambie el nombre del proyecto VS2008 correspondiente. La sincronización de opciones de proyecto también sería increíble, pero no necesaria. Tampoco necesito una sincronización a nivel de solución.

Editar : se me ha sugerido "fusionar" 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 entre los archivos de proyecto vc9 y vc10? podría escribir mi propia herramienta si no hay otra forma de abordar esto.

¿Fue útil?

Solución

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

Al menos pruébelo en uno de sus proyectos, es la solución ideal para su 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 se modifican los archivos Cmake y todos los proyectos se actualizan al mismo tiempo.

En resumen, CMake es:
 1. limpio
 2. descriptivo
 3. nativos
 4. seguro

Porque:
 1. Todas las opciones y configuraciones se pueden 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 código 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, proyectos que ahora son comunes para VS y Xcode.
Pero hubiera valido la pena incluso para las diferentes versiones de VS solamente.

Otros consejos

El proyecto Gallio OSS se construye con VS2010, mientras que la mayoría de los contribuyentes todavía usan VS2008. Para mantener los archivos * .csproj sincronizados con los archivos * .vs2010.csproj , utilizamos un script simple de PowerShell que ejecuta WinMerge en cada par de archivos de proyecto. Nada complicado, pero muy útil.

Puede descargar el script en Código de Google . Para ejecutarlo, simplemente escriba el siguiente comando:

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

Espero que ayude.

El control de fuente ayuda aquí. He hecho esto antes con versiones anteriores al hacer una rama mejorada (VS2010) y fusionar los cambios de ida y vuelta entre él y el tronco (VS2008). Aunque ciertamente no es perfecto, funciona.

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

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

  • No poder ingresar opciones de proyecto específicas de VS2010
  • Cualquier cambio en el proyecto VS2010 se sobrescribirá y no se fusionará con VS20008.

Solo puede mantener esos archivos de solución / proyecto por separado. si vas a escribir tu complemento, ¡avísame!

No tengo 2010 instalado en el trabajo, así que voy principalmente de memoria aquí. Muy poco ha cambiado en el esquema del archivo del 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 en su mayor parte funcionará la misma técnica. Dado que son básicamente esquemas XML, también puede 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 gustaba 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 ClickOnce del archivo del proyecto para que se detuviera.

EDITAR: Mi experiencia se basa principalmente en el esquema del 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 no han llegado a Documentación de MSDN en la versión 10 todavía.

Visual Studio 2010 admite la orientación múltiple que le permitirá desarrollar usando VS2010 y reducir las herramientas de la 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 ++ listos para usar, aquí hay información sobre cómo configurar la cadena de herramientas VS2005

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

Hice precisamente esto cuando apareció VS 2008 y lo estábamos evaluando mientras el resto del equipo usaba VS 2005. No quería comprometer ninguno de los archivos de proyecto de formato nuevo, ya que eso lo rompería por el resto del equipo, así que escribí un pequeño script en ruby ??que solo buscó todos los archivos .vcproj y los renombré a _2008.vcproj . También hice lo mismo con los archivos .sln , pero también busqué las referencias a .vcproj en los archivos sln y cambié el nombre a < code> _2008.vcproj para que haga referencia a los nuevos proyectos.

A continuación, simplemente cargue los nuevos archivos de solución y deje que el asistente de migración haga lo suyo (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ó.

Es posible que necesite agregar más ajustes al script que es cambiar los campos OutputDirectory y IntermediateDirectory en el archivo vcproj para que esté compilando en diferentes directorios también. Si lo hace, significa que debería poder compilar con cualquier versión de Visual Studio en el mismo árbol de origen.

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top