2009-07-24 8 views
0

Nous maintenons actuellement une énorme base de code avec des centaines de * .proj et peut-être 50 solutions avec des dépendances interconnectées.MSBuild vs NAnt pour une base de code mixte 2005 et 2003

Toute notre base de code est soit .net soit héritée C++.

Le processus de génération en cours est un script de ligne de commande imbriqué qui effectue un contrôle automatique du code source et crée ensuite chaque solution à son tour en appelant devenv.exe. Je voudrais profiter de quelques-uns des meilleurs outils de développement et de déploiement et je pense que j'ai réglé entre NAnt ou MSBuild.

Voici le hic:

Environ la moitié de la base de code est en cours de construction sous Visual Studio 2003. L'autre moitié est 2005. Il est politiquement possible de migrer vers l'avant de l'IDE en cours à ce moment que cela nécessitera un nouveau test et introduira des risques.

Ma question est - Quelqu'un at-il réussi à utiliser MSBuild pour créer des solutions 2003? Puis-je créer facilement des tâches de douane qui appellent nos solutions héritées en invoquant devenv.exe?

Ou devrais-je considérer seulement NAnt en ce moment?

Répondre

2

Je pense qu'une approche hybride pourrait être la meilleure ici aussi. Utilisez simplement vos scripts MSBuild pour les projets VS2005 et créez des scripts NAnt pour les anciens projets VS2003. Si vous avez besoin d'un script de génération pour gérer les deux, utilisez NAnt pour contrôler le processus, ainsi que la tâche NAnt MSBuild. L'inconvénient ici est que vous devrez maintenir une certaine connaissance de deux systèmes de construction, mais je parie que vous migreriez vers MSBuild à long terme de toute façon.

+0

Juste pour garder ma santé, est-il possible que MSBuild commence tout juste à déclencher notre script shell existant qui construit nos anciens projets VC2003 et en laisse NAnt? –

+0

Ouais, je pense que vous pourriez simplement appeler les fichiers de commandes à partir de vos scripts MSBuild. http://social.msdn.microsoft.com/Forums/en-US/tfsbuild/thread/2a58d361-c89b-4c0a-8884-18639aa63c7c est une URL, mais je suis sûr qu'il y en a beaucoup d'autres avec plus de détails. Cela semble assez simple. – jsight