Разделение сборки на несколько выходных каталогов - PullRequest
0 голосов
/ 08 октября 2010

У меня есть решение, которое использует 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)" />

Любые изящные предложения покак решить эту проблему?

1 Ответ

1 голос
/ 08 октября 2010

Вы должны быть в состоянии использовать технику, найденную здесь: http://blogs.msdn.com/b/aaronhallberg/archive/2007/06/07/preserving-output-directory-structures-in-orcas-team-build.aspx

...