Invece di rispondere direttamente a questa domanda ti dirò solo alcune idee su come è fatto in ruby:
1) in un root di progetto hai un unico file, che ha un elenco di librerie che vorresti usare con la loro versione.
come
"popular lib1, version > 2.0",
"popular lib 2, versione 1.55, archivia in www.aaa.bbb / 1.55.tgz",
"popular lib 3, memorizzata su www.xxx.com/1.git, qualsiasi versione"
Quindi
2) lo strumento analizza i requisiti della versione e trova la migliore versione di lib (quindi tutti i requisiti di versione sono abbinati).
quindi hai una sorta di cartella ./cache che contiene la copia dei file scaricati.
Quindi per un c # vorrei sempre copiare intere librerie nella cartella principale del progetto, come
libs3rdparty / con nome. Non mi piace alcuna sorta di librerie condivise per l'intera azienda, con uno spazio del disco così atroce non ha senso in questo. Come opzione (per rendere più piccola la dimensione SVN) potresti creare un file install.bat che prende le versioni lib da certe posizioni e aggiunge libs3rdparty allo svnignore.