Andrew:
Prima di tutto, si viola un paio di "buone pratiche" per ottenere questo risultato, ma il pragmatismo è dove le migliori pratiche incontra il mondo reale.
Quello che facciamo è questa:
- Tutti i binari vengono controllati per TFS all'interno di una cartella LocalBin che consolida tutti i nostri binari.
- Tutti gli assembly condivisi si trovano all'interno di una cartella denominata LocalBin/SharedBin
- La cartella SharedBin è diramata a una cartella SharedBin di livello superiore all'interno dei progetti del team che consuma.
- In una build principale completata correttamente, il LocalBin/Sharedbin viene unito alle cartelle SharedBin dei progetti.
Si finisce per essere qualcosa di simile:
$/ProjectA/Main/Localbin/SharedBin
è ramificata a $/ProjectB/Main/SharedBin
e $/ProjectB/Dev/Sharedbin
(così come le cartelle equivalenti in $/ProjectC
, $/ProjectD
eccetera).
Facciamo questa condivisione solo quando abbiamo una build MAIN di successo e la build è responsabile della fusione non solo con gli altri progetti MAIN branch, ma anche con i progetti di ramo DEV, quindi sono aggiornati.
Abbiamo accarezzato l'idea di copiare i binari in una posizione di rete condivisa dopo una build di successo e di avere una convenzione per fare riferimento a quei binari in quella condivisione di rete, ma questo processo funziona bene per noi oggi, e noi stai detestando di apportare modifiche a questo punto (cose più importanti accadono per ora).
Questa è una di quelle cose che è difficile descrivere completamente in un post, quindi se hai altre domande, sarei felice di provare a rispondere.
BTW, la nostra soluzione è stata creata ed è in esecuzione in TFS2008 con migliaia di file di progetto e probabilmente milioni di righe di codice. Aumenta il tempo di costruzione a causa dell'unione e aumenta la quantità di spazio utilizzato nel repository, ma entrambi sono stati gestibili finora.
Grazie per la soluzione. Mi ci vorrà del tempo per investigare! –