51 votes

Comment lier plusieurs solutions Visual Studio entre elles ?

J'ai 3 solutions et la solution A nécessite des versions construites des DLLs de la solution B et C afin de compiler. Il n'est pas possible de la fusionner en une seule solution...

Jusqu'à présent, il semble que Visual Studio ne supporte pas les références de solutions et que msbuild est suffisamment intelligent pour savoir que vous construisez une solution à partir d'une autre, etc. si j'essaie de cette manière. L'objectif global est d'essayer de faire en sorte que les multiples solutions semblent presque comme s'il n'y en avait qu'une seule - juste la solution A.

Je crois que c'est un problème courant, mais comment le relier joliment ?

0 votes

Pourquoi ne pouvez-vous pas les fusionner en une seule solution ?

0 votes

Aussi, pourquoi n'utilisez-vous pas msbuild ?

5 votes

Nous ne pouvons pas le mettre dans une seule solution car le B et le C sont utilisés dans plus que le A. pendant le dev, il est construit comme vs build ; si msbuild fonctionne mieux, dites-nous comment !

32voto

Greg D Points 24218

Cette question est apparue dans différents mais connexe des formulaires. Il existe en fait un Page MSDN qui traite de ce sujet .

Ce que vous recherchez, c'est une approche multi-solution semblable à la Modèle partitionné à solution unique pour les systèmes plus grands . Ayez une solution "tout" qui construit tout et maintient vos dépendances inter-composants. C'est ce que vous construisez lorsque vous avez besoin de construire la solution A. Vous avez ensuite des solutions séparées qui n'incluent que les composants B ou C. Essentiellement, vous aurez toujours 3 solutions, mais vous ajouterez les projets des solutions B et C dans la solution A.

3 votes

Ce modèle présente toutefois aussi des problèmes. Par exemple, TFS(-2012) n'est toujours pas assez intelligent pour comprendre que si vous renommez un projet dans le contexte d'une solution, toute autre solution qui inclut le projet doit également être mise à jour (la "référence" dans le fichier sln). De plus, dans le monde réel, il se peut que vous utilisiez des outils à jour (VS-2012) pour la plupart des choses, mais que vous ayez encore besoin de développer certaines parties de la solution dans un autre outil (par exemple pour BizTalk, ce qui n'est toujours pas possible avec VS-2012), de sorte que la solution "tout" n'est pas possible.

0 votes

Dans ce cas, il suffit de passer à un modèle entièrement cloisonné avec un système personnalisé :) Ce n'est pas un scénario rare.

4voto

Paul Redman Points 123

J'ai récemment découvert que dans Visual Studio 2008, vous pouvez inclure des projets existants dans plusieurs solutions. Le seul inconvénient jusqu'à présent semble être que si vous apportez une modification à un projet partagé et que vous avez plusieurs solutions ouvertes qui utilisent ce projet partagé, il vous sera demandé de "recharger" les autres solutions.

Il suffit donc d'ajouter un projet existant à toutes les solutions qui en ont besoin. J'utilise TFS sur mon site actuel et il ne semble pas y avoir de problèmes avec le contrôle de la source non plus.

3voto

Dean Points 3017

Je pense que c'est le niveau du projet que vous recherchez. Créez les projets contenus dans les solutions B et C, puis ajoutez des références aux DLL dans les projets concernés de la solution A.

Dans Msbuild, si vous avez un groupe de propriétés

<PropertyGroup>

<SolutionsToBuild>SolutionB</SolutionsToBuild>
<SolutionsToBuild>SolutionC</SolutionsToBuild>
<SolutionsToBuild>SolutionA</SolutionsToBuild>
</PropertyGroup>

Ensuite, exécutez la tâche MSBuild

<MSBuild Projects="@(SolutionsToBuild)"/>

J'espère que cela vous aidera

1voto

bushed Points 398

Vous pouvez essayer d'automatiser le processus de fusion pour gagner du temps : http://code.google.com/p/merge-solutions/

Bien que nous ayons eu un problème légèrement différent : environ 15 solutions (~150 projets au total) qui utilisaient une bibliothèque commune. Le problème était que si nous essayions de les fusionner toutes en une seule afin de refactoriser / exterminer le code redondant de la bibliothèque commune. 1. fusionner 15 solutions implique beaucoup de clics et d'attente dans VS 2. la solution résultante n'était jamais à jour - personne ne prenait la peine de la mettre à jour à cause de sa taille

1voto

Greg, cette page a environ 7 ans. J'espérais qu'il y aurait maintenant une solution plus sophistiquée pour ce problème. Travailler avec une solution unique dans le cadre de projets de grande envergure est une véritable plaie.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X