Ok, donc j'ai un problème un peu compliqué avec mon environnement de construction que j'essaie de gérer.Dépendances d'écrasement de MSBuild
J'ai un fichier de solution qui contient plusieurs projets C# qui est construit par un script NAnt appelant MSBuild - en passant MSBuild le nom du fichier de solution et un chemin pour copier les binaires. C'est parce que je veux que mon environnement de compilation automatisé (CruiseControl.Net) crée un dossier nommé après la révision de chaque build - de cette façon, je peux facilement revenir aux binaires précédents pour une raison quelconque.
donc idealement J'ai une mise en page du dossier comme celui-ci
c:\build\nightly\rev1
c:\build\nightly\rev2
c:\build\nightly\rev3
...
c:\build\nightly\rev10
etc.
Le problème qui surgie est moi récemment ajouté la dernière version du conteneur Unité IoC à mon projet, vérifier directement sur dépôt SVN en ligne MS. Ce qui se passe, c'est que j'ai un projet Silverlight 3 qui fait référence à la version Silverlight d'Unity mais j'ai aussi d'autres projets (à savoir mon projet de test Unit) qui référencent la version standard (non-Silverlight) d'Unity.
Alors que MSBuild vide tout dans un seul dossier, la version Silverlight de l'assembly Unity remplace la version non-Silverlight car ils ont exactement le même nom de fichier d'assembly.
Ensuite, lorsque CruistControl exécute mes tests unitaires, ils échouent car ils ne disposent plus des dépendances appropriées (ils essaient de charger l'ensemble Unity spécifique à Silverlight qui, évidemment, ne fonctionne pas).
donc ce que je veux faire est:
- garder ma structure désirée répertoire de sortie (dossier de révision \)
- Je ne veux pas avoir à modifier manuellement chaque fichier proj je car ce est sujette aux erreurs lors de l'ajout de nouveaux projets à la solution
Idealy Je voudrais MSBuild tout mettre dans une structure de dossiers semblable à ceci:
nightly\revision1\project1
nightly\revision1\project2
nightly\revision1\project3
...
nightly\revision2\project1
nightly\revision2\project2
nightly\revision2\project3
etc
Je ne peux pas modifier le projet Unity pour lui donner un nom de fichier différent parce qu'il vient d'un autre dépôt SVN Je ne peux pas valider les modifications à. J'ai trouvé une question similaire postée ici et la solution suggérée était d'utiliser un fichier MSBuild "master" qui utilisait une tâche personnalisée pour extraire tous les noms de fichiers du projet hors de la solution puis passer en boucle sur chacun d'eux. J'ai essayé cela mais il ne les construit pas dans l'ordre de leurs dépendances, donc ça échoue pour mon projet.
Aide?