Nous avons un problème similaire car nous avons 109 projets distincts à traiter. Pour répondre aux questions originales basées sur nos expériences:
1. Comment meilleures références de la poignée entre les projets
-vous que nous utilisons l'option de menu contextuel "ajouter une référence. Si 'projet' est sélectionné, la dépendance est ajoutée à notre unique fichier de solution global par défaut.
2. La fonction "copie locale" doit-elle être activée ou désactivée?
Dans notre expérience. La copie supplémentaire ajoute juste aux temps de construction.
3. Si chaque projet de construire à son propre dossier, ou devraient-ils construire tous dans le même dossier de sortie (ils font tous partie de la même application)
Tous notre production est mis en une seule dossier appelé «bin». L'idée étant que ce dossier est le même que lorsque le logiciel est déployé. Cela permet d'éviter les problèmes qui surviennent lorsque la configuration du développeur est différente de la configuration du déploiement.
4. Les dossiers de solutions sont-ils un bon moyen d'organiser les choses?
Aucun dans notre expérience. La structure de dossiers d'une personne est le cauchemar d'une autre personne. Les dossiers profondément imbriqués augmentent simplement le temps nécessaire pour trouver quoi que ce soit. Nous avons une structure complètement plate mais nous donnons le même nom à nos fichiers de projet, nos assemblages et nos espaces de noms.
Notre façon de structurer les projets repose sur un seul fichier de solution. Construire cela prend beaucoup de temps, même si les projets eux-mêmes n'ont pas changé. Pour aider à cela, nous créons généralement un autre fichier de solution «jeu de travail en cours». Tous les projets sur lesquels nous travaillons sont ajoutés à cela. Les temps de construction sont considérablement améliorés, bien qu'un problème que nous avons vu est que Intellisense échoue pour les types définis dans les projets qui ne sont pas dans l'ensemble actuel.
Un exemple partiel de notre mise en page de la solution:
\bin
OurStuff.SLN
OurStuff.App.Administrator
OurStuff.App.Common
OurStuff.App.Installer.Database
OurStuff.App.MediaPlayer
OurStuff.App.Operator
OurStuff.App.Service.Gateway
OurStuff.App.Service.CollectionStation
OurStuff.App.ServiceLocalLauncher
OurStuff.App.StackTester
OurStuff.Auditing
OurStuff.Data
OurStuff.Database
OurStuff.Database.Constants
OurStuff.Database.ObjectModel
OurStuff.Device
OurStuff.Device.Messaging
OurStuff.Diagnostics
...
[etc]
Puis-je demander pourquoi une seule solution a besoin de plus de 100 projets? Créent-ils chacun leur propre assemblée? –
Oui, ils le sont, et chacun d'eux représente une fonctionnalité logique distincte. – Eyvind
Nous avons une chose similaire ici en Java ...un cadre, environ 200 plugins maintenant. Met Eclipse à l'épreuve en les chargeant tous et je parie que ce n'est pas si rare (bien que ce soit académique, donc probablement différent de The Real World ™). – Joey