2013-04-15 18 views
7

La domanda è: alla fine - vorrei iniziare ponendo contesto:Memorizzare gli SDK di Windows nel controllo del codice sorgente?

Uno dei problemi che stiamo affrontando al lavoro quando si utilizza Visual Studio è quello di fare in modo che tutti nel team sta usando la stessa versione degli SDK.

Un problema tipico sarebbe quello di avere qualcuno usare un diverso Direct X SDK versione risultante in un diverso comportamento del codice, o qualcuno l'aggiornamento a uno SDK più recente della piattaforma/Windows al fine di utilizzare alcune nuove API e avere il codice non funziona sui computer degli altri programmatori se continuano a utilizzare la versione precedente.

Un modo in cui abbiamo risolto il problema per altri middleware è stato quello di inserire l'intero set di librerie, file, catene di strumenti, ecc. Nel nostro sistema di controllo del codice sorgente e utilizzare i nostri progetti in modo che nessuno deve installare qualsiasi cosa Siamo riusciti a farlo anche con la versione precedente di Direct X SDK, ma abbiamo sempre avuto problemi con Windows/Platform SDK a causa degli stretti collegamenti tra l'SDK e la toolchain.

Dal momento che ora abbiamo per supportare sia VS2010 e VS2012, e devono sostenere da Windows XP a Windows 8 obiettivi, dobbiamo sostenere v100, v110 e v110_xp set di strumenti.

Ciò significa che abbiamo bisogno di tutti i compilatori associati e gli SDK corrispondenti, sia sui nostri sistemi di sviluppo che sui sistemi di compilazione: questo sta diventando incredibilmente costoso da mantenere, specialmente considerando che gli aggiornamenti casuali di Windows e le versioni di framework .net tendono normalmente a rompersi msbuild.

Quindi la domanda è:

  • E 'possibile disporre di Visual Studio per utilizzare set di strumenti non installati e SDK e invece averlo utilizzare tutto ciò che è disponibile in qualche cartella fuori del normale VS posizioni di installazione?

  • Domanda bonus: se è fattibile, è possibile farlo senza dover cambiare alcun file di configurazione installato localmente sulla macchina - es .: Avere tutto ciò nella soluzione/progetto o fogli di proprietà - quindi se cambiamo la struttura sul sistema di controllo del codice sorgente non è necessario aggiornare ogni singola macchina?

Grazie :)

+2

Garantire per il modo VM (build server). In alternativa, immagini di installazione fantasma. (IMO quello che stai descrivendo è, in un certo senso, il mondo UNIX, e purtroppo Microsoft non si adatta bene a quell'immagine) – sehe

+0

Sì a entrambe le domande, tuttavia è più un trucco che un'operazione banale. È qualcosa che puoi configurare sulla macchina da costruire. In ogni caso dovresti diramarlo e farlo rotolare sul ramo dev quando è pronto per l'uso. – KMoraz

+0

Sono d'accordo con @sehe dovresti provare a creare VM standard e costringere gli sviluppatori a utilizzare lo stesso ambiente. Questo è un processo rigoroso che tutti dovrebbero seguire a meno che qualcuno non voglia rompere la build e ferire qualcun altro. Se qualcuno deve utilizzare un SDK più recente, creare una nuova immagine VM per lui/lei e chiedere di effettuare il check-in su un ramo isolato. Una volta che è il momento giusto, tutti dovrebbero eseguire l'aggiornamento a quella nuova immagine VM. Se gestisci correttamente, non è necessario eseguire il check-in degli SDK per il controllo del codice sorgente, poiché non è questa la soluzione. –

risposta

0

Questo sembra troppo complicato, data la complessità alcune di queste installazioni sono utensili. Risolverei questo problema investendo in alcuni script di PowerShell che esaminano gli strumenti installati e i percorsi degli strumenti e "sorvegliano" le installazioni. Sarebbe relativamente facile controllare le versioni installate di tutto, comprese le patch e gli aggiornamenti. Puoi correre quelli di notte o come parte di una costruzione. Inoltre, puoi confrontare aspetti di diverse installazioni, come ad esempio le versioni dello strumento installate su un box di sviluppo con il tuo server di build.

Questo ti darebbe il 90% del valore per il 10% del dolore.

0

I problemi che descrivi non sono risolti con il tuo approccio. Quello di cui si ha effettivamente bisogno è un server di build e una definizione di fatto che includa l'uso di binari creati con il build server. È inoltre necessaria una suite di test come parte della definizione di build con alcuni invarianti relativi all'ambiente di generazione utilizzato.

Problemi correlati