Wie andere Programmierer auch habe ich meine Projekte in einzelne Solutions zusammengefasst. Nicht wenige dieser Solutions haben auch komplexere Abhängigkeiten.
Bisher hatte ich insgesamt dann 4 größere Solutions, die alle Projekte dann für einen vollen Release-Build bündelten. Bisher wurden diese großen Solution-Builds, dann durch spezielle Batchfiles gesteuert.
Seit ich den TFS (Team Foundation Server) verwende habe ich begonnen alle einzelnen Komponenten direkt auch auf das Buildsystem des TFS hin abzubilden. Dazu gehört auch, alle Projekte in einer großen Solution zusammenzufassen, um nun im Teambuild alles weitere ablaufen zu lassen.
Als ich mühsam Projekt für Projekt in eine große Master-Solution einfügen wollte machte ich eine nette Entdeckung:
Man kann nicht nur existierende Projekte in eine Solution einfügen. Nein! Es ist sogar möglich eine ganze Solution in eine bestehende Solution einzufügen und dabei sogar alle Abhängigkeiten in dieser Solution zu erhalten. Einfach im Dateidialog die Solutions auswählen und das war es auch schon.
Das macht es wirklich einfach auch komplexere Solutions in eine Master-Solution zusammenzufügen. Jetzt ist es auch nicht weiter schwer die verbleibenden Abhängigkeiten, die bei mir in dem Batch geregelt wurden zu definieren.
Hm. TFS kenn ich leider nicht, da ich an meinem Proj. großteilig alleine arbeite. Aber die Sache mit der Master-Solution habe ich schon seit Vc6.
Ich habe mir auch alles relativ angebunden, unter anderem habe ich mittlerweile 3 boost versionen in meiner Verwaltung(monotone) von 1.33.1 bis aktuell 1.35.0. Fertig gebaut, die libs gepackt und in der Versionsverwaltung mit abgelegt. In meinen Projekten greife ich auf diese dann über relative Includepfade zu und erstelle und debugge auch alles relativ. Damit habe ich zum Beispiel nie unterschiede zwischen meinem Rechner auf Arbeit und dem zu Hause oder den Laptops.
laufwerk:\mtn\binary\
laufwerk:\mtn\compile\
laufwerk:\mtn\proj1\
laufwerk:\mtn\proj2\
laufwerk:\mtn\proj3…\
usw usf
Wenn die Projekte nicht wie bei mir alle zusammengehören, kann man binary ja noch unterteilen. Compile gehört an sich ja schon nach Projekten und Konfigurationen unterteilt.
Unter anderen nutze ich noch r2build wenn auch noch nicht so ausgefeilt wie ich es gern hätte. Aber es tut schon in Ansätzen ganz gute Dienste. Das und WinUnit, hilft auch ein klein wenig vorzeitig Fehler zu finden.
@Torsten: Mir ging es darum, dass meine eine Solution in einer Solution einfügen kann… Das ist unabhängig von TFS. Sorry wenn ich mich hier unklar ausgedrückt habe.
BTW: Ich benutze auch TFS privat, selbst wenn ich nur alleine ein paar Sourcen pflege… 😉
Ja wenn man des geld für TFS übrig hat, kann und sollte man es natürlich immer nutzen. Wollte nur ein paar Alternativen darlegen 😉
Und noch ein paar nützliche Tools erwähnen 😉
Du hast doch ein MSDN Abo. Da ist bestimmt die TFS Workgroup Edition mit drin…