13

Mi piacerebbe sincronizzare un progetto VC++ 2010 con uno VC++ 2008. È possibile? Fondamentalmente, se sto aggiungendo/eliminando/rinominando un file in un progetto in VS2010, mi piacerebbe che fosse aggiunto/cancellato/rinominato nel progetto VS2008 corrispondente. Anche la sincronizzazione delle opzioni del progetto sarebbe fantastica, ma non necessaria. Non ho nemmeno bisogno di una sincronizzazione a livello di soluzione.Sviluppare perfettamente sia in VC++ 2010 che in VC++ 2008 sullo stesso lavoro?

Modifica: Mi è stato suggerito di "unire" i file di progetto al momento del check-in o di compilare il tempo con uno script o uno strumento. Sfortunatamente, il formato del file di progetto VC++ è cambiato da VS2008 a VS2010 e non ha nulla in comune. Quindi la mia domanda è più simile a: Esiste uno strumento in grado di unire/convertire tra i file di progetto vc9 e vc10? Potrei scrivere il mio strumento se non ci sono altri modi per affrontarlo.

risposta

6

Nella mia azienda abbiamo avuto esattamente lo stesso problema e abbiamo scelto di utilizzare CMake.

Almeno provalo su uno dei tuoi progetti, è la soluzione ideale per il tuo problema.

permette di descrivere i nostri progetti con una semplice sintassi nei file di testo e quindi CMake genera VS2005, VS2008 e VS2010 progetti dagli stessi file.
In questo modo vengono modificati solo i file Cmake e tutti i progetti vengono aggiornati contemporaneamente.

In breve CMake è:
1. pulita
2. descrittivo
3. nativo
4. sicuro

Perché:
1. Tutte le opzioni e le configurazioni possono essere letti in i file, non in molti pannelli di proprietà.
2. La grammatica e la sintassi di CMake sono facili da leggere.
3. Tutti i progetti generati sono completi e indipendenti da CMake.
4. È possibile utilizzare Gestione controllo del codice sorgente nei file CMake.

Abbiamo avuto alcune soluzioni di 50 progetti o 20 progetti ed è stato un sacco di lavoro, e uno dei motivi per cui abbiamo usato CMake era perché avevamo bisogno di lavorare con Xcode su Mac su alcune librerie quali progetti sono ormai comuni per VS e Xcode.
Ma sarebbe valsa la pena anche per le diverse versioni di VS solo.

+0

questo è in realtà quello che ho deciso per. Grazie. – KeatsPeeks

1

È possibile gestire separatamente tali file di soluzione/progetto. se scriverai il tuo componente aggiuntivo per favore fammi sapere!

2

Il controllo del codice sorgente aiuta qui. L'ho fatto prima con le versioni precedenti creando un ramo aggiornato (VS2010) e unendo le modifiche avanti e indietro tra esso e il trunk (VS2008). Mentre certamente non è senza soluzione di continuità, funziona.

Non so se il progetto cambi in VS2010 lo renderebbe migliore o peggiore di prima!

+0

Questo progetto è fonte controllata con TFS, quindi sono molto interessato a questo. Ma non capisco come potrei unire le modifiche tra un progetto .vcproj (2008) e un .vcxproj (VC++ 2010). Come posso ottenerlo? – KeatsPeeks

+0

Dovresti unire le modifiche tra i due nello stesso modo in cui faresti per qualsiasi altro file in TFS. – GraemeF

1

Non ho installato il 2010 al lavoro, quindi vado principalmente dalla memoria qui. Molto poco è cambiato nello schema del file di progetto dal 2005 al 2008 fino al 2010. Per la maggior parte, uso semplicemente uno strumento di confronto testuale come WinDiff o BeyondCompare per evidenziare le modifiche e copiarle da un file all'altro. Non ho giocato con nessuno dei tipi di progetti web, ma suppongo che per lo più funzioni la stessa tecnica. Dato che il loro schema XML è fondamentalmente puoi anche usare uno strumento di mappatura XML per fare lo stesso lavoro.

Ho notato quando ho convertito un progetto open source a cui nel 2010 non piacevano le impostazioni del progetto ClickOnce. Sarebbe convertito bene, ma mi avrebbe chiesto di convertirlo di nuovo ogni volta che avessi aperto il progetto. Ho finito per dover rimuovere completamente le informazioni ClickOnce dal file di progetto per farla smettere.

EDIT: La mia esperienza si basa soprattutto sullo schema di progetto C#, che non è cambiato molto nel corso del tempo. Come ha sottolineato TheSamFrom1984, ci sono alcuni grossi cambiamenti nello schema C++ che non sono ancora stati inseriti nello MSDN documentation on version 10.

+2

Sfortunatamente, i file di progetto VC10 e VC9 differiscono completamente. – KeatsPeeks

+0

Ultimamente non ho avuto l'opportunità di lavorare direttamente con i file di progetto VC++, ma gli schemi XSD pubblicati da MS non indicano modifiche alla struttura. Dove sono le differenze che stai vedendo? –

+1

Ad esempio, i file sono elencati con in vc9 e in vc10. Un diff mostra solo una linea comune: la prima. – KeatsPeeks

6

Il progetto Gallio OSS viene creato utilizzando VS2010 mentre la maggior parte dei contributori utilizza ancora VS2008. Per mantenere i file *.csproj sincronizzati con i file *.vs2010.csproj, utilizziamo un semplice script PowerShell che esegue WinMerge su ogni coppia di file di progetto. Niente di complicato, ma molto utile.

È possibile scaricare lo script su Google Code. Per eseguirlo, basta digitare il seguente comando:

@echo off 
powershell "& './Compare VS2010 Projects.ps1' -sync %*" 

spero che aiuta.

+0

Sarebbe utile in C#, ma i file di progetto C++ non possono essere uniti poiché il layout è completamente diverso da VC++ 2008 a VC++ 2010. Buona idea però. – KeatsPeeks

+0

Mmh ... Non avevo visto che parli di progetti VC++ e non di progetti C#. Quindi non so se la mia soluzione è realmente applicabile nel tuo scenario. –

+0

Penso che sia la migliore idea. Ora la mia domanda è ridotta a "come posso" unire "tra i file di progetto vc9 e vc10". Potrei farlo da solo con uno strumento. – KeatsPeeks

2

Credo che sia un'opzione della riga di comando per migrare un file di progetto VS2008 in VS2010. Quindi un'opzione potrebbe essere solo mantenere il VS2008 e rigenerare i progetti VS2010.I lati negativi sono

  • Non essendo in grado di entrare VS2010 opzioni di progetto specifici
  • Eventuali modifiche al progetto VS2010 verrà sovrascritto e non fuse di nuovo a VS20008.
+0

Ci ho pensato, ma ho anche bisogno di fare il 2010-> 2008 – KeatsPeeks

1

Visual Studio 2010 supporta il multi-targeting che consente di sviluppare utilizzando VS2010 e downtarget gli strumenti della piattaforma su V9 in modo da poter utilizzare gli strumenti più recenti per mantenere un progetto precedente. Perché non farlo?

Viene fornito con VS2010 e VS2008 per C++, fuori dalla scatola, ecco alcune informazioni settingup la toolchain VS2005

http://weblogs.asp.net/israelio/archive/2009/10/20/enable-vs-2010-multi-targeting-also-for-vs2005-c.aspx

+0

Credo che l'idea non sia tanto quella di utilizzare una versione del compilatore diversa per compilare i file sorgente, ma che i diversi sviluppatori del progetto possano utilizzare qualsiasi dei 2 IDE che hanno (o preferiscono). –

+0

In passato l'IDE e la versione del compilatore erano strettamente legati in modo per compilare con VC8 avevi bisogno VS2k5, e per compilare con VC9 è necessario VS2k8 (abbiamo questo problema esatto presso il nostro ufficio ora). VS2010 consentirà a tutti di utilizzare VS2010 e ancora downtarget su VC9 o VC8 anziché VC10. Quello che sto dicendo è dare a tutti 2010 e lasciarli downtarget piuttosto che supportare IDE multipli :) –

1

ho fatto proprio questo indietro quando VS 2008 è venuto fuori e siamo stati valutando esso mentre il resto del team stava usando VS 2005. Non volevo impegnare nessuno dei nuovi file di progetto in formato in quanto ciò avrebbe infranto il resto del team, così ho scritto un piccolo script in ruby ​​che cercava solo tutti i file .vcproj e li ha rinominati in _2008.vcproj. Ho fatto lo stesso anche per i file .sln, ma ho anche cercato i riferimenti a .vcproj nei file sln e lo abbiamo rinominato in _2008.vcproj in modo che faccia riferimento ai nuovi progetti.

Successivamente, è sufficiente caricare i nuovi file di soluzione e lasciare che il wizard di migrazione faccia il suo esempio (presumo che VS 2010 ne abbia uno simile alle versioni precedenti). Ciò consente di eseguire entrambe le versioni affiancate. Se qualcun altro nel team apporta modifiche al vecchio file di progetto, è sufficiente rieseguire la conversione e quindi la procedura guidata dovrebbe semplicemente migrare il progetto che è cambiato.

C'è un ulteriore ritocco potrebbe essere necessario aggiungere allo script che è quello di modificare i campi OutputDirectory e IntermediateDirectory nel file vcproj in modo che si sta costruendo a diverse directory troppo. Se lo fai, significa che dovresti essere in grado di creare con entrambe le versioni di Visual Studio sullo stesso albero dei sorgenti.

0

È necessario considerare la copia VS2010 come una diramazione. Ogni due giorni e in caso di modifiche importanti (i test in sospeso passano, ovviamente), unire le modifiche nell'altro ramo. Questa è una pratica largamente adottata e accettata negli ambienti software Enterprise.

+0

Ancora una volta, non capisco come puoi farlo, dal momento che tu CANT si fondono tra i progetti vc9 e vc10 – KeatsPeeks

Problemi correlati