Как устанавливать сборки динамически, на которые ссылается веб-службы WCF?
Привет!
У меня есть расширяемая веб-служба WCF, которая использует архитектуру стиля плагина. Доступные плагины, также доморощенные, наследуются от интерфейса C#, который запечен в сервисе. Сами Плагины существуют в хорошо известной папке, которая является подпапкой, в которой находятся основные сервисные сборки. Служба извлекает идентификатор папки подключаемого модуля из конфигурации, повторяет сборки в папке, определяет, какие из них реализуют интерфейс, а какие нет, загружает нужные ей по требованию и использует их.
Плагины в настоящее время находятся в одном или нескольких файлах решений Visual Studio отдельно от того, который содержит основную службу. Я пытался поместить их все в то же решение, что и сервис, но это не имело значения. Результат тот же-когда я развертываю службу с помощью Visual Studio плагины не развертываются Я предполагаю, что это связано с тем, что на них ссылаются динамически, а не статически (простите, если я использую неправильную терминологию, большая часть моего фона относится к области C++.)
Я хочу, чтобы процесс развертывания взял все сборки из папки, содержащей Плагины, которая включала бы любые сборки, от которых зависят плагины, и развернул все это вместе со службой, используя желаемую структуру папок. Я хочу, чтобы плагины и любые другие сборки, которые им нужны, существовали в отдельной папке, чтобы свести к минимуму количество сборок, которые служба должна исследовать (по соображениям производительности) и просто потому, что я чувствую, что это более чистая структура.
Вся схема работает хорошо - за исключением того, что я должен сначала развернуть сервис, а затем вручную развернуть Плагины. Очевидно, это крайне нежелательно. Я так и не понял, как убедить Visual Studio сотрудничать и развернуть все одним махом.
Что мне нужно сделать, чтобы уговорить Visual Studio развернуть этот материал по своему желанию?
Заранее спасибо за помощь!!
Что я уже пробовал:
Я пытался:
1. ручное редактирование файла PUBXML
2. Добавление папки, ссылающейся на плагины, в проект веб-сайта в VS
3. Помещая каждый проект плагина в одном .sln как основная услуга
4. Размещения на CodeProject надеясь на дельные советы!! ;)