2008-12-02 19 views
3

Nous avons un grand nombre de solutions Visual Studio qui contiennent les mêmes 15 projets partagés, et la plupart des solutions ne diffèrent que par une application Web. J'essaie de tout consolider dans une seule construction qui construit les projets partagés une seule fois, puis les projets d'application Web référencent les assemblys partagés en sortie.MSBuild: Comment puis-je forcer ProjectReference à rechercher un assembly dans un autre emplacement?

Étant donné que le projet Web pointe vers les projets partagés via l'élément < ProjectReference>, je ne peux pas lui demander de rechercher ailleurs un assemblage à l'intérieur de mon projet de construction personnalisé. Je voudrais utiliser quelque chose de similaire à:

< MSBuild Projets = "@ (Solutions)" Cibles = "Rebuild" Propriétés = "ReferencePath = $ (MyReferencePathFolder)">

mais ne fonctionnera que si le projet Web fait référence à la DLL de l'assembly partagé via un élément Référence> <. Il semble que s'il ne peut pas trouver ce qui est pointé dans < ProjectReference>, il ne cherche pas dans n'importe quel dossier ReferencePath. Ca abandonne juste.

+0

Pourquoi ne pas simplement vider tous les projets Web dans la même solution? – yfeldblum

+0

J'ai essayé mais ça semble ralentir les choses en essayant de construire tous les projets partagés plusieurs fois –

Répondre

1

Vous pouvez envisager de référencer les 15 assemblys partagés à partir d'un emplacement connu.

Vous pouvez créer une solution contenant les 15 projets et copier la sortie dans un dossier spécifique. Vous pouvez ensuite modifier vos projets d'application Web pour référencer les assemblages, et non les projets partagés.

Ce que vous perdez avec cette méthode est la possibilité de reconstruire automatiquement vos projets partagés à partir d'une solution d'application Web. Si vous souhaitez recréer automatiquement les 15 assemblages lorsque vous travaillez sur l'une des solutions d'application Web, vous pouvez ajouter une étape de préconfiguration dans vos solutions d'application Web pour créer votre nouvelle solution de projet partagé.

+0

C'est le genre de situation que j'espère éviter. Je veux garder les développeurs heureusement capables de simplement appuyer sur le bouton de compilation une fois pendant le développement plutôt que de devoir d'abord recompiler le partage, puis le web. –