Domanda

Microsoft Visual Studio utilizza XML per salvare i file di progetto .vcproj . Quindi diffondere i file di progetto XML dovrebbe essere facilmente.

Sfortunatamente, se si modifica una delle proprietà del file di progetto, Visual Studio insiste per mescolare casualmente i nodi XML del file di progetto! Ciò rende sostanzialmente impossibile la differenziazione e l'unione testuale delle modifiche ai file di progetto. La modifica di un'impostazione del compilatore può far pensare che il mio strumento di visualizzazione visiva abbia modificato il 50% delle righe nel file! Ho anche provato alcuni strumenti diff XML, ma mostrano solo una visione più strutturata dello stesso pasticcio.

Qualcuno ha qualche suggerimento per mantenere i file .vcproj nel controllo del codice sorgente? O un modo per convincere Visual Studio a non riorganizzare i nodi XML nel file .vcproj ?

(Ho anche studiato usando strumenti come CMake per generare file .vcproj da un file di testo più diff, ma CMake ha i suoi problemi.)

È stato utile?

Soluzione

Questo sembra emergere di tanto in tanto.

Forse è un problema maturo per un plug-in o un altro strumento di normalizzazione.

Sarebbe una grande impresa secondaria, fino a quando MS non deciderà di risolverlo. Quindi sei sfortunato - a meno che ovviamente non si offrano di acquistare il tuo IP.

Qualcuno vuole avviare un progetto open source o un prodotto commerciale? Sono un gioco.

Potrei provare uno strumento di normalizzazione autonomo, quindi vedere se riesco a trasformarlo in un plug-in.

Altri suggerimenti

Lo stiamo vedendo qui al lavoro ora, con i file di progetto in cui le configurazioni sono riordinate sui computer di molte persone ed è molto frustrante ...

* Nota : Tutti usiamo VS 2008 Pro, non Team

All'inizio sembra che vengano riordinati casualmente, ma in realtà esiste un modello e non è affatto casuale.

Per un gruppo le configurazioni sono ordinate per Piattaforma, quindi per Config:

  • Debug | Win32
  • Debug | x64
  • Release | Win32
  • Release | x64
  • Debug DX11 | Win32
  • Debug DX11 | x64
  • Rilascio DX11 | Win32
  • Rilascia DX11 | x64
  • ...

Per l'altro gruppo le configurazioni sono ordinate da Config, quindi da Platform:

  • Debug | Win32
  • Release | Win32
  • Debug DX11 | Win32
  • Rilascio DX11 | Win32
  • Debug | x64
  • Release | x64
  • Debug DX11 | x64
  • Rilascia DX11 | x64
  • ...

Guardando attraverso la storia, questo è coerente con più progetti presentati dagli stessi gruppi di persone, e c'è una divisione 50/50, quindi non sta accadendo solo per una persona.

È questo lo stesso problema che state riscontrando tutti? In tal caso, spero che questo modello aiuti a trovare una soluzione che non implichi un passaggio macro / extra diff ...

Deve essere un'impostazione da qualche parte, o un effetto collaterale del clic su qualcosa, poiché è riproducibile al 100% per ciascuna di queste macchine. Anche se è qualcosa di sciocco come l'opzione che scegli per il layout iniziale dell'ambiente (VC ++, VB, Sviluppo generale, ect ...)

Uso WinMerge come strumento diff e ho abilitato il rilevamento dei blocchi spostati. Non risolve completamente il problema, ma rende la visualizzazione delle differenze un po 'più sopportabile.

In quale versione di Visual Studio vedi questo?

Lavoro molto con i file .vcproj (manteniamo le versioni dei file di progetto per le nostre librerie in più versioni di Visual Studio, e sto sempre diffondendo e fondendo le cose) ma non ho mai visto questo comportamento.

Il mio team di Adobe ha visto la stessa cosa in vs2008. Solo un progetto di debug / release di base, win32 / win64 offre 4 configurazioni e shuffle casuale. Diverse persone hanno cercato di capire quando e perché riordinare devstudio, ma il pensiero attuale è la chiave di ordinamento è una parola chiave hash - quindi semi-casuale. Abbiamo rinunciato e nelle revisioni del codice sintetizziamo semplicemente " reale " cambiamenti.

Penso di aver trovato il motivo di questo shuffle. Almeno in VS2008.

Se installi i compilatori x64, VS ordinerà i progetti come:

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

In caso contrario, li ordinerà come:

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

Quindi assicurati che tutti i tuoi colleghi abbiano installato lo stesso set di compilatori, in modo che non si mescoli.

Testato e questo comportamento sembra essere riproducibile.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top