Αμφιβάλλω και αν θα βρεις, γιατί αυτό που περιγράφεις είναι built-in functionality του Visual Studio. Δεν έχει νόημα να φτιάξει κανείς κάτι το οποίο ήδη υπάρχει. Δεν είναι τυχαίο ότι το Visual Make δεν έχει βγάλει νέα έκδοση τόσο καιρό.
Όσο για το αν πρέπει να παραμείνει η κατάσταση, στο 99% των περιπτώσεων δεν χρειάζεται. Οι διάφορες τέτοιες "καταστάσεις" οφείλονται στο ότι κάτι δεν δούλεψε πριν από ΧΥΖ χρόνια, βρέθηκε μία γρήγορη λύση και παρέμεινε γιατί α) κανείς δεν πήρε χαμπάρι ότι διορθώθηκε το πρόβλημα ή β) γιατί κανείς δεν θυμάται ποιό ήταν το αρχικό πρόβλημα και φοβάται να αλλάξει κάτι που "δουλεύει". Στην περίπτωση σου μπορεί να συμβαίνουν δύο πράγματα: ή πριν από 5 χρόνια ένα solution αργούσε φοβερά αν έβαζες μέσα 100+ projects ή υπήρχαν διαφορετικά solutions για διαφορετικούς πελάτες.
Έχεις όμως δύο επιλογές:
- Μπορείς να φτιάξεις ένα νέο solution μόνο και μόνο για να κάνεις το build, στο οποίο θα προσθέσεις όλα τα projects. Έτσι καθαρίζεις με όλη τη βαβούρα.
- Μπορείς να χρησιμοποιήσεις το File Dependency action του FinalBuilder για να κάνεις build κάποιο solution μόνο αν έχουν αλλάξει κάποια αρχεία ή folders.
Όταν χρειάστηκα το FinalBuilder πριν 2 χρόνια αντιμετώπιζα κι εγώ μία κατάσταση παρόμοια με τη δικιά σου. Υπήρχαν περίπου 100 VB6 projects και 7-8 .NET projects τα οποία γίνονταν build με το χέρι γιατί κανείς δεν πίστευε ότι μπορούσε να γίνει διαφορετικά. Η διαδικασία του build έπαιρνε ώρες ενώ μπορούσε να φτάσει και ολόκληρη μέρα. Κανείς δεν πίστευε ότι μπορούσε να γίνει κάτι καλύτερο, ενώ τα λάθη από χαλασμένα builds (μπερδεμένες version κλπ) ήταν πολύ συχνά.
Με το FinalBuilder πρόσθεσα όλα τα projects σε μία λίστα, και έβαλα ένα loop πάνω σε αυτή τη λίστα το οποίο α) τράβαγε την σωστή έκδοση από το Sourcesafe, β) έκανε build το project, γ) αντέγραφε το dll ή exe στο κατάλληλο folder, δ) έκανε register τα DLL (για τα VB6 projects) και ε) στο τέλος έφτιαχνε και ένα setup. Μου πήρε μία-δύο μέρες να το τελειοποιήσω (ουσιαστικά να βάλω τα VB6 στη σωστή σειρά) αλλά μετά από αυτό, όλη η διαδικασία τελείωνε σε 30-40 λεπτά.
Παναγιώτης Καναβός, Freelancer
Twitter: http://www.twitter.com/pkanavos