2011-09-11 17 views
26

abbiamo una soluzione VS2008 e ho notato qualcosa di strano succede:Progetto GUID continua a cambiare

alcuni progetti si riferiscono altri progetti che sono definiti nella stessa soluzione (aggiunto come riferimenti del progetto). Questo è stato fatto qualche tempo fa.

Costruire direttamente da VS funziona bene.

Edificio da MSBUILD non riuscito.

Ho rimosso il riferimento del progetto e lo ho aggiunto e ho notato che il GUID del progetto è stato modificato. Costruire da MSBUILD ora funziona.

Il problema è che ora devo esaminare tutti i progetti e verificarlo.

Inoltre, non ho idea del motivo per cui ciò si è verificato (perché il GUID del progetto è diverso da quello di prima, e non è sicuro che ciò possa accadere di nuovo).

Quale potrebbe essere la causa di questo?

+0

Quale errore hai ottenuto mentre esegui MSBuild? – sll

+0

Si lamenta dei tipi mancanti, poiché non è in grado di determinare le librerie mancanti. –

+0

Può essere causato il numero di versione dinamico? – VMAtm

risposta

29

Vedo anche questo problema in Visual Studio 2013 e non richiede l'integrazione controllo del codice sorgente a verificarsi.

Accade occasionalmente quando ho lo stesso progetto in più soluzioni, ogni soluzione utilizza un GUID diverso per quel progetto e aggiorna il progetto di conseguenza. La soluzione è modificare manualmente i file .sln per sincronizzarli. Il merito di questa risposta va a Chunsheng Tang.

Per prima cosa aprire il file della soluzione (.sln) con il blocco note e controllare i riferimenti del progetto lì. Il formato è il seguente:

 # 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 

Il secondo GUID per ciascun progetto è il riferimento al progetto condiviso.

Per risolvere il problema, selezionare un singolo GUID per il progetto condiviso; Assicurati che tutte le soluzioni che lo aprono abbiano quel singolo quindi lo stesso GUID nei loro file di soluzione. (Si prega di eseguire il backup dei file prima di fare questi cambiamenti)

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

Il problema per me si è rivelato essere un GUID duplicato in uno dei file di soluzione. All'interno di .sln per il mio programma di installazione ho rilevato che il GUID del progetto di configurazione (utilizzato in tutto il luogo) e il GUID del progetto di installazione (specifico per la soluzione) erano identici. L'apertura della soluzione ha indotto VS a modificare il GUID per uno di essi nel file di progetto, sebbene non apparentemente nel file di soluzione. Come sempre, ha scelto sempre quello condiviso causando il massimo dolore. La correzione consisteva nel creare un nuovo GUID per il progetto di installazione e modificare manualmente tutti gli altri file di soluzione sul GUID corretto per il progetto Config.

Non ho idea di come sia successo perché non copio mai i progetti per crearli.

1

Il file di soluzione ottiene il guid di progetto dal file di progetto.Hai aggiornato la soluzione/progetto da una versione precedente di VS? Se il guid nel file di soluzione continua a cambiare, potrebbe essere perché il file di progetto non ha affatto un guid, quindi VS ne crea uno nuovo ogni volta che la soluzione viene aperta. Lo chiamerei un bug nel meccanismo di aggiornamento VS, ma nessuno mi ha chiesto. Risolvere il problema con l'aggiunta di un GUID nel file di progetto come questo:

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

Aprire la soluzione ancora una volta e lasciare che il cambiamento guid progetto per l'ultima volta a questo nuovo GUID. Il guid non cambierà mai più.

0

Per quanto riguarda la soluzione alternativa: è possibile fare riferimento al GUID in diversi punti del file di soluzione (.sln). Ricordarsi di sostituire tutti i riferimenti a questo GUID, non solo quello menzionato nella soluzione alternativa (la soluzione è bloccata, impossibile lasciare un commento lì, quindi ho dovuto rispondere a questo post).

Problemi correlati