Pregunta

Microsoft Visual Studio utiliza XML para guardar sus archivos de proyecto .vcproj . Por lo tanto, los archivos XML de proyectos deberían ser fáciles.

Desafortunadamente, si cambia alguna de las propiedades del archivo de proyecto, Visual Studio insiste en mezclar aleatoriamente los nodos XML del archivo de proyecto. Esto hace que la diferenciación textual y la fusión de los cambios del archivo del proyecto sea básicamente imposible. Cambiar la configuración de un compilador puede hacer que mi herramienta de visualización visual piense que he cambiado el 50% de las líneas en el archivo. Incluso he probado algunas herramientas de diferencia XML, pero solo muestran una vista más estructurada del mismo desorden.

¿Alguien tiene alguna sugerencia para mantener los archivos .vcproj en el control de código fuente? ¿O una forma de convencer a Visual Studio de que no reorganice los nodos XML en el archivo .vcproj ?

(También he investigado el uso de herramientas como CMake para generar archivos .vcproj a partir de un archivo de texto más fácil de usar, pero CMake tiene sus propios problemas).

¿Fue útil?

Solución

Esto parece surgir de vez en cuando.

Quizás sea un problema para un complemento u otra herramienta de normalización.

Sería un gran negocio paralelo, hasta que MS decida arreglarlo. Entonces no tendrás suerte, a menos que, por supuesto, ellos ofrezcan comprar tu IP.

¿Alguien quiere iniciar un proyecto de código abierto o un producto comercial? Estoy juego.

Podría probar una herramienta de normalización independiente y luego ver si puedo convertirla en un complemento.

Otros consejos

Estamos viendo esto aquí en el trabajo ahora, con archivos de proyectos donde las configuraciones se reordenan en las computadoras de varias personas, y es muy frustrante ...

*Nota: Todos usamos VS 2008 Pro, no Equipo

Al principio, parece que se han reordenado aleatoriamente, pero en realidad hay un patrón y no es aleatorio en absoluto.

Para un grupo, las configuraciones están ordenadas por Plataforma, luego por Configuración:

  • Debug | Win32
  • Debug|x64
  • Lanzamiento | Win32
  • Liberarse|x64
  • Depurar DX11 | Win32
  • Depurar DX11 | x64
  • Lanzamiento DX11 | Win32
  • Lanzamiento DX11 | x64
  • ...

Para el otro grupo, las configuraciones están ordenadas por Config, luego por Platform:

  • Debug | Win32
  • Lanzamiento | Win32
  • Depurar DX11 | Win32
  • Lanzamiento DX11 | Win32
  • Debug|x64
  • Liberarse|x64
  • Depurar DX11 | x64
  • Lanzamiento DX11 | x64
  • ...

Mirando a través de la historia de la experiencia, esto es consistente con múltiples proyectos enviados por el mismo conjunto de personas, y hay una división de aproximadamente 50/50, por lo que no solo sucede para una persona.

¿Es este el mismo problema que todos están viendo? Si es así, espero que este patrón ayude a encontrar una solución que no implique un paso macro / extra diff ...

Tiene que ser una configuración en algún lugar, o un efecto secundario de hacer clic en algo, ya que es 100% reproducible para cada una de estas máquinas. Incluso si es algo tonto, como la opción que eliges para el diseño de tu entorno inicial (VC ++, VB, Desarrollo General, etc.)

Uso WinMerge como mi herramienta de diferencias y habilité la detección de bloque movido. No soluciona el problema, pero hace que visualizar las diferencias sea un poco más soportable.

¿En qué versión de Visual Studio estás viendo esto?

Trabajo mucho con archivos .vcproj (mantenemos versiones de los archivos de proyecto para nuestras bibliotecas en varias versiones de Visual Studio, y siempre estoy difuminando y fusionando las cosas) pero nunca he visto este comportamiento.

Mi equipo en Adobe ha visto lo mismo en vs2008. Solo un proyecto básico de depuración / lanzamiento, win32 / win64 te da 4 configuraciones y barajadas aleatorias. Varias personas han tratado de averiguar cuándo y por qué devuelve Devstudio, pero el pensamiento actual es que la clave es un hash de palabra clave, por lo tanto, semi-aleatorio. Nos hemos dado por vencidos y en las revisiones de código solo resumimos " real " cambios.

Creo que he encontrado la razón de esta baraja. Al menos en VS2008.

Si instala los compiladores x64, VS ordenará los proyectos como:

Debug|Win32
Debug|x64
Release|Win32
Release|x64

Si no lo haces, los ordenará como:

Debug|Win32
Release|Win32
Debug|x64
Release|x64

Así que asegúrate de que todos tus compañeros tengan el mismo conjunto de compilador instalado, para que no se mezclen.

Lo probé y este comportamiento parece reproducible.

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