Member 12754693 Ответов: 0

Как устанавливать сборки динамически, на которые ссылается веб-службы WCF?


Привет!

У меня есть расширяемая веб-служба WCF, которая использует архитектуру стиля плагина. Доступные плагины, также доморощенные, наследуются от интерфейса C#, который запечен в сервисе. Сами Плагины существуют в хорошо известной папке, которая является подпапкой, в которой находятся основные сервисные сборки. Служба извлекает идентификатор папки подключаемого модуля из конфигурации, повторяет сборки в папке, определяет, какие из них реализуют интерфейс, а какие нет, загружает нужные ей по требованию и использует их.

Плагины в настоящее время находятся в одном или нескольких файлах решений Visual Studio отдельно от того, который содержит основную службу. Я пытался поместить их все в то же решение, что и сервис, но это не имело значения. Результат тот же-когда я развертываю службу с помощью Visual Studio плагины не развертываются Я предполагаю, что это связано с тем, что на них ссылаются динамически, а не статически (простите, если я использую неправильную терминологию, большая часть моего фона относится к области C++.)

Я хочу, чтобы процесс развертывания взял все сборки из папки, содержащей Плагины, которая включала бы любые сборки, от которых зависят плагины, и развернул все это вместе со службой, используя желаемую структуру папок. Я хочу, чтобы плагины и любые другие сборки, которые им нужны, существовали в отдельной папке, чтобы свести к минимуму количество сборок, которые служба должна исследовать (по соображениям производительности) и просто потому, что я чувствую, что это более чистая структура.

Вся схема работает хорошо - за исключением того, что я должен сначала развернуть сервис, а затем вручную развернуть Плагины. Очевидно, это крайне нежелательно. Я так и не понял, как убедить Visual Studio сотрудничать и развернуть все одним махом.

Что мне нужно сделать, чтобы уговорить Visual Studio развернуть этот материал по своему желанию?

Заранее спасибо за помощь!!

Что я уже пробовал:

Я пытался:

1. ручное редактирование файла PUBXML
2. Добавление папки, ссылающейся на плагины, в проект веб-сайта в VS
3. Помещая каждый проект плагина в одном .sln как основная услуга
4. Размещения на CodeProject надеясь на дельные советы!! ;)

0 Ответов