У меня есть решение, которое использует NServicebus, которое содержит как минимум 3 проекта, которые представляют интерес для этого сценария;издатель, свип и веб-сервис.Как правило, развертки собирают данные для издателя, чтобы сохранить их в базе данных, а затем опубликовать для подписчиков.Веб-сервис предоставляет доступ к данным, хранящимся в базе данных издателей.
Когда я построил это решение на своем компьютере разработчика и развернул в тестовой среде, все было хорошо.На прошлой неделе мы начали использовать автоматические сборки на сервере сборки, и пока он успешно собирается, службы не запускались в тестовой среде.Я обнаружил, что это потому, что NServicesBus использует маркерные интерфейсы.Универсальный хост NServicesBus использует отражение для проверки сборок в том же каталоге, что и хост, на наличие этих маркеров, чтобы он знал, какие из них запустить.В отличие от моей локальной сборки, сервер сборки не собирает каждый проект в свой собственный каталог bin, он просто сбрасывает все сборки в один каталог bin.Поскольку теперь существует несколько классов, которые хотят запустить хост, это не сработает.Кроме того, веб-сервис содержит гораздо больше сборок, чем нужно издателю, и необходимость в развертке, поэтому конечный результат заключается в том, что одни и те же сборки развертываются в трех разных каталогах.Это не нужно и не работает.
Я уже так модифицировал сборку, чтобы обойти это, но это утомительно и не терпимо к изменениям:
<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)" />
Любые изящные предложения покак решить эту проблему?