2011-09-11 15 views
26

tenemos una solución VS2008 y me he dado cuenta que ocurra algo raro:Proyecto GUID no deja de cambiar

algunos proyectos se refieren a otros proyectos que están definidos en la misma solución (añadida como referencias del proyecto). Esto fue hecho hace un tiempo.

Construir directamente desde VS funciona bien.

Error al generar desde MSBUILD.

He eliminado la referencia del proyecto y la he vuelto a agregar, y he notado que el GUID del proyecto ha cambiado. La construcción desde MSBUILD ahora funciona.

El problema es que ahora tengo que revisar todos los proyectos y verificar esto.

Por otra parte, no tengo idea de por qué ocurrió esto (¿por qué el proyecto GUID es diferente de lo que era antes, y no estoy seguro de si esto puede suceder de nuevo).

¿Cuál podría ser la causa de esto?

+0

¿Qué error recibió al ejecutar MSBuild? – sll

+0

Se queja de los tipos faltantes, ya que no puede determinar las bibliotecas faltantes. –

+0

¿Puede esto ser el número de versión dinámico? – VMAtm

Respuesta

29

También veo este problema en Visual Studio 2013, y que no requiere de la integración de control de origen que se produzca.

Me sucede ocasionalmente cuando tengo el mismo proyecto en múltiples soluciones, cada solución usa un GUID diferente para ese proyecto y actualiza el proyecto en consecuencia. La solución es modificar manualmente los archivos .sln para sincronizarlos. El crédito por esta respuesta es para Chunsheng Tang.

Primero abra el archivo de solución (.sln) con el bloc de notas y revise las referencias del proyecto allí. El formato es el siguiente:

 # Visual Studio 2005 
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "WindowsApplication1", "WindowsApplication1\WindowsApplication1.csproj", "{9378D255-CE38-45CD-82FA-A1EBFB86FD6C}" 
EndProject 
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "ClassLibrary1", "ClassLibrary1\ClassLibrary1.csproj", "{DE374096-FF44-4FDF-B248-C767039B4175}" 
EndProject 

El segundo GUID para cada proyecto es la referencia al proyecto compartido.

Para resolver el problema, seleccione un único GUID para su proyecto compartido; Asegúrese de que todas las soluciones que lo abren tengan ese único y, por lo tanto, el mismo GUID en sus archivos de solución. (Por favor, copia de seguridad de sus archivos antes de hacer estos cambios)

https://social.msdn.microsoft.com/Forums/en-US/1d632940-cc1d-49d5-a64c-d3e999216cbd/cant-avoid-the-projectguid-from-being-changed-in-csproj-file?forum=csharpide

2

El problema para mí resultó ser un GUID duplicado en uno de los archivos de solución. Dentro del archivo .sln para mi instalador, encontré que el GUID del proyecto de configuración (utilizado en todas partes) y el GUID del proyecto de instalación (específico de la solución) eran idénticos. La apertura de la solución provocó que VS cambiara el GUID para uno de ellos en el archivo del proyecto, aunque aparentemente no en el archivo de la solución. Da la casualidad que siempre eligió la compartida causando la pena máxima. La solución fue crear un nuevo GUID para el proyecto de instalador y editar manualmente todos los demás archivos de solución al GUID correcto para el proyecto de configuración.

No tengo idea de cómo sucedió esto ya que nunca copio proyectos para crearlos.

1

El archivo de solución obtiene el guid de proyecto del archivo de proyecto.¿Actualizaste la solución/proyecto de una versión anterior de VS? Si el guid en el archivo de la solución cambia constantemente, podría ser porque el archivo del proyecto no tiene un guid en absoluto, por lo que VS crea uno nuevo cada vez que se abre la solución. Llamaría esto un error en el mecanismo de actualización VS, pero nadie me preguntó. Solucionar el problema mediante la adición de un GUID en el archivo de proyecto como este:

<PropertyGroup> 
    <ProjectGuid>{FB0F4A2A-1F78-42BF-8E31-E4FEFDC5565F}</ProjectGuid> 
    </PropertyGroup> 

Abrir la solución una vez más y dejar que el proyecto de cambio GUID una última vez para este nuevo GUID. El guid nunca cambiará de nuevo.

0

En cuanto a la solución: el GUID se puede hacer referencia a varios lugares en el archivo de solución (.sln). Recuerde reemplazar todas las referencias a este GUID, no solo la que se menciona en la solución alternativa (la solución está bloqueada, no se puede dejar un comentario allí, así que tuve que responder esta publicación en su lugar).

Cuestiones relacionadas