2010-10-08 2 views
0

J'ai une solution qui utilise NServicebus qui contient au moins 3 projets qui sont intéressants pour ce scénario; un éditeur, un balayage et un service Web. Fondamentalement, les balayages recueillent des données que l'éditeur doit stocker dans une base de données, puis les publier aux abonnés. Le webservice donne accès aux données stockées dans la base de données des éditeurs.Division d'une construction en plusieurs répertoires de sortie

Lorsque j'ai construit cette solution sur ma boîte de dev et déployée dans l'environnement de test, tout allait bien. La semaine dernière, nous avons commencé à utiliser des générations automatisées sur un serveur de génération et, pendant la génération, les services ne démarraient pas dans l'environnement de test. J'ai trouvé cela parce que NServicesBus utilise des interfaces de marqueur. L'hôte générique NServicesBus utilise la réflexion pour vérifier les assemblages dans le même répertoire que l'hôte pour ces marqueurs afin qu'il sache lequel déclencher. Contrairement à ma construction locale, le serveur de construction ne construit pas chaque projet dans son propre répertoire bin, il ne fait que copier tous les assemblages dans un seul répertoire bin. Comme il existe maintenant plusieurs classes qui veulent être démarrées par l'hôte, cela ne fonctionne pas. En outre, le service Web a beaucoup plus d'assemblages à inclure que l'éditeur et le balayage, de sorte que le résultat final est que les mêmes assemblys sont déployés dans trois répertoires différents. C'est inutile et ça ne marche pas.

que je suis en train de modifier la construction comme si pour se déplacer, mais il est fastidieux et ça change pas tolérant:

<CreateItem Include="$(OutDir)*.*" Exclude="$(OutDir)BOHSweep*"> 
    <Output ItemName="PublisherFilesToCopy" TaskParameter="Include" /> 
</CreateItem> 

<CreateItem Include="$(OutDir)*.*" Exclude="$(OutDir)InventoryPublisher*"> 
    <Output ItemName="BOHSweepFilesToCopy" TaskParameter="Include" /> 
</CreateItem> 

<Copy SourceFiles="@(PublisherFilesToCopy)" DestinationFolder="\\XXXX\Transmittals\BOHPublisher\Test\%(RecursiveDir)" /> 
<Copy SourceFiles="@(BOHSweepFilesToCopy)" DestinationFolder="\\XXXX\Transmittals\BOHSweep\Test\%(RecursiveDir)" /> 

Toutes les suggestions élégantes sur la façon d'aborder ce problème?

+0

Quelle est votre serveur de build, et pourquoi ne pas construire chaque projet dans un répertoire bin individuel? Nous utilisons CruiseControl.NET pour construire notre solution Visual Studio avec MSBuild et cela fonctionne très bien. –

Répondre

Questions connexes