Как зарегистрировать сборки с помощью Windsor в ASP.NET MVC

Вот так выглядит мой проект:

  • TestMvc (мой веб-проект) имеет ссылку на сборку DomainModel.Core, в которой находятся мои интерфейсы и бизнес-объекты.

  • Класс, реализующий интерфейсы в DomainModel.Core, находится в другой сборке с именем DomainModel.SqlRepository; причина этого в том, что если я просто хочу создать репозиторий для Oracle, мне просто нужно развернуть новую dll, изменить web.config и покончить с этим.

Когда я создаю решение, если я смотрю на папку \bin моего проекта TestMvc, там нет ссылки на DomainModel.SqlRepository, что имеет смысл, потому что на него нигде нет ссылки.

Проблема возникает, когда моя фабрика контроллеров Windsor пытается разрешить эту сборку, поскольку она не находится в каталоге \bin. Итак, есть ли способ указать Windsor на конкретное место без добавления ссылки на эту сборку? Мой web.config выглядит так:

<component id="UserService"
  service="TestMvc.DomainModel.Core.Interface, TestMvc.DomainModel.Core"
  type="TestMvc.DomainModel.SqlRepository.Class, TestMvc.DomainModel.SqlRepository"
  lifestyle="PerWebRequest" />

Есть много способов обойти это, например, скопировать dll как часть сборки, добавить ссылку на проект, чтобы он был скопирован в папку \bin, или установить его в GAC и добавить ссылку на сборку в web.config. Я предполагаю, что мой вопрос специфичен для Виндзора, чтобы узнать, могу ли я указать местонахождение моей сборки, и это решит ее.


person oz.    schedule 09.04.2010    source источник


Ответы (1)


Windsor использует стандартный механизм разрешения сборок .NET. Вы можете установить перенаправление сборки в своем web.config, но лучше, чтобы MsBuild просто скопировал файл.

person Krzysztof Kozmic    schedule 09.04.2010