2010-11-16 18 views
14

Trabajo en equipo en un proyecto de Visual C++. Siguiendo advice obtenemos que estamos rastreando el archivo .sln del proyecto con nuestro SCM. Resulta que cada vez que retiro de mi compañero (sí, usamos git) y abrimos la solución en VS, el archivo .sln se actualiza. La parte que se actualiza es el tiempo de identificación que aparece varias veces (en este caso termina con 7C44) en el segmento siguiente:Visual Studio sigue cambiando el archivo project.sln

{828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.ActiveCfg = Debug|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Debug|Win32.Build.0 = Debug|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.ActiveCfg = DebugStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.DebugStaticCRT|Win32.Build.0 = DebugStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.ActiveCfg = Release|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Release|Win32.Build.0 = Release|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.ActiveCfg = ReleaseStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.ReleaseStaticCRT|Win32.Build.0 = ReleaseStaticCRT|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.ActiveCfg = Template|Win32 
    {828CB89E-F092-3B7A-2F8C-62E146587C44}.Template|Win32.Build.0 = Template|Win32 

¿Qué significa este número? ¿Cómo podemos hacer que deje de cambiar entre nosotros?

+0

El número es un GUID, que supongo se utiliza para representar un determinado proyecto dentro de la solución. –

+1

Sí, la pregunta es ¿por qué ese GUID cambia cada vez? – Arafangion

+0

El GUID (identificador grande) se utiliza para identificar proyectos de una manera única. ¿Hay algún otro proyecto con el mismo GUID en la solución? –

Respuesta

9

Ese es un GUID que Visual Studio usa para referirse a los proyectos individuales. Encontrará el mismo GUID en la parte superior del archivo .sln, donde los proyectos se definen/importan.

Visual Studio lee el GUID del archivo correspondiente .csproj/.vbproj. Allí debe encontrar una propiedad ProjectGuid cerca de la parte superior con el GUID correspondiente. Si usted y su compañero tienen un GUID diferente definido allí, el .sln también se actualizará.

+0

Entonces, ¿puede uno de nosotros editar manualmente .csproj /.vbproj y cambiar el GUID para que se ajuste al del otro? – Jonathan

+0

@Jonathan Sí, podrías. Además, el archivo debe estar en control de la versión de todos modos. –

+3

Estoy viendo el mismo problema, pero esto no parece aplicarse a mí. Realicé cambios en mi archivo .vcxproj y .sln y registré todos los archivos. Traté de probarlo descargando el proyecto completo en una nueva ubicación. En la nueva ubicación, los GUID cambian cuando abro el archivo de solución y ¡el proyecto es un desastre! Todavía estoy tratando de descubrir cómo arreglar esto. Estoy usando VS2010 – zar

5

He tenido el mismo problema. Finalmente noté que venía de un archivo vcxproj que no definía su GUID. I añadido manualmente este GUID en mi archivo vcxproj:

<PropertyGroup Label="Globals"> 
    <ProjectGuid>{D3303AD3-B7E5-48F8-919C-18202ABAEF00}</ProjectGuid> 
    <RootNamespace>MyProject</RootNamespace> 
    <ProjectName>MyProject</ProjectName> 
    <Keyword>MFCProj</Keyword> 
    </PropertyGroup> 
27

que tenían dificultades para encontrar este post en particular en la búsqueda de la respuesta, por lo que sólo quería añadir algunas palabras clave y explicación para que sea más fácil de encontrar . Gracias a las fantásticas respuestas de Daniel y tgb, pude resolver este problema y mi equipo y yo ya no tenemos archivos de solución conflictivos después de abrir Visual Studio 2010 (votaría sus respuestas, pero acabo de unirme hoy y aún no tengo suficientes puntos de reputación para votar las respuestas ...).

Por lo tanto, para hacer la pregunta de algunas formas más: ¿Por qué Visual Studio cambia los archivos .sln al abrir una solución? ¿Por qué los archivos .sln tienen modificaciones locales? o ¿Qué causa los conflictos de combinación en los archivos de Visual Studio Solution?

Respuesta: Muy probablemente un atributo ProjectGuid diferente o ausente en el archivo de proyecto .vcxproj provocará modificaciones locales. Esto podría deberse a la actualización de proyectos de versiones anteriores de Visual Studio o simplemente a copiar manualmente un archivo de proyecto y editar partes de él.

La solución es añadir la línea:

<ProjectGuid>{###}</ProjectGuid> 

(con la ID apropiada desde el archivo de solución en lugar de ###) en el fichero de .vcxproj en el 'Label PropertyGroup = 'Globals'' nodo, por ejemplo:

<PropertyGroup Label="Globals"> 
    <ProjectGuid>{FD0675C0-EC06-E665-4001-12DEE6694605}</ProjectGuid> 
    <RootNamespace>MyProject</RootNamespace> 
    </PropertyGroup> 

de lo contrario Visual Studio acaba de asignar un nuevo ProjectGuid azar para cada proyecto y actualizar el archivo .sln. El 'ProjectGuid' se pueden encontrar fácilmente para un proyecto determinado en el archivo .sln:

Project("{<Filter#>}") = "MyProjName", "src\to\Proj.vcxproj", "{<ProjectGuid>}" 
+4

También agrego que una razón posible para un atributo '' falta está convirtiendo el proyecto de uno VC6. – ceztko

Cuestiones relacionadas