2010-02-24 15 views
33

Ho più progetti in una singola soluzione di Visual Studio (2008).
Ho appena scoperto che ognuno di questi progetti utilizza uno stesso GUID, quindi nel file di soluzione che appare così:Quali sono i GUID di progetto in un file di soluzione di Visual Studio utilizzato?

Project("{FAE04EC0-F103-D311-BF4B-00C04FCBFE97}") = "Pro1", "Pro1\Pro1.csproj", "{...}" 
Project("{FAE04EC0-F103-D311-BF4B-00C04FCBFE97}") = "Pro2", "Pro2\Pro2.csproj", "{...}" 

Devo cambiare questi GUID in modo che siano unici e che cosa sono utilizzati per ?

+1

Fa sia partita file csproj? – Ryu

+0

@Ryu se si, cosa significa? –

risposta

40

Progetto blocco la persistenza in un file di soluzione ha il seguente formato:

Project("{project type GUID}") = "<Project name>", "<project file location>", 
    "{<Unique project GUID>}" 
EndProject 

Quindi ci si aspetta che il primo GUID è non univoco, si identifica in modo univoco il pacchetto Visual Studio che gestisce questo tipo di progetti.

Il GUID che hai pubblicato è interessante - sembra un GUID di progetto C# stravolto, che è FAE04EC0-301F-11D3-BF4B-00C04F79EFBC. L'hai modificato tu stesso o si tratta di un problema di pubblicazione (ad esempio, stai utilizzando le impostazioni internazionali da destra a sinistra, come l'ebraico o l'arabo).

+1

Grazie mille Oleg!Ho cambiato me stesso il GUID perché pensavo che sarebbe stato unico per soluzione. Non avevo un'idea migliore del contrario di alcuni dei suoi valori e certamente non pensavo che sarebbe stato un valore comune per i progetti C# :-) – Marc

+10

Memorizza i GUID? – Seth

+18

@Seth non lo fai? ;) – sebagomez

3

I file del progetto nel file csproj devono essere univoci. Dalla mia esperienza se due file csproj sono inclusi nella stessa soluzione, lo studio visivo rigenera automaticamente uno dei guids.

+0

Sia VS che Sharpdevelop fanno questo per voi. Basta essere consapevoli delle implicazioni se il progetto su cui è stato modificato il GUID viene referenziato da un'altra soluzione altrove. Il file sln dell'altra soluzione e altri file di progetto che fanno riferimento al progetto modificato utilizzeranno il vecchio GUID e ciò interromperà i riferimenti del progetto. Fissato facilmente ma vale la pena tenere a mente. Vale anche la pena sapere che VS potrebbe cambiare il GUID del progetto che era lì per primo. – andyhasit

14

Copierò spesso un file di progetto VS, lo rinominerò e cercherò e sostituirò tutte le occorrenze del nome del progetto per creare un nuovo progetto con le stesse impostazioni. Questo è spesso più rapido rispetto alla creazione di un nuovo progetto e quindi assicurando che tutte le impostazioni siano corrette. Ignoro il GUID. VS cambierà il GUID non appena salverò il progetto dopo averlo aggiunto alla soluzione.

Faccio molto sviluppo DLL/C/C++ e ho deviato ampiamente dalle impostazioni standard del progetto nel corso degli anni (in particolare per quanto riguarda l'ottimizzazione, la generazione di codice ecc.) E trovo la tecnica di copia un modo più veloce e sicuro di creare un progetto.

+2

Grazie. La modifica di un file XML è molto più semplice che ricordare dove si fa clic e quale menu aprire, ecc. I file di testo sono molto più ripetibili delle azioni della GUI. – Bram

+2

Puoi risolvere la maggior parte di ciò con i fogli di proprietà del progetto. Metti la tua ottimizzazione/generazione del codice ecc., Quindi includi i fogli in ogni progetto. –

1

Word to the wise: Se si sta creando un progetto XBO 4.0 XBOX360 e si sta provando questo trucco, Non utilizzare un guid generato da VS 2012. generarne uno in VS2010 e utilizzare quello.

Oppure si verificherà il seguente errore quando si tenta di eseguire il progetto re-guid in XNA Game Studio Connect.

"Questo gioco è mancante o danneggiato, blah blah blah, riavviare XNA Game Studio Connect?"

e quindi bombarderà. I guai di VS 2010 funzionano bene. Non ho idea del perché.

+1

Più in generale, dopo aver testato ulteriormente, la rinomina di per sé in Visual Studio 2012 è orribilmente interrotta. Userò 2010 o 2013 per queste funzioni. – twobob