В адаптерах конвейера System.AddIn (aka MAF) имеется много ручного копирования значений от одного типа DTO к другому - от типов HostView до типов Контрактов трубопровода и от типов Контрактов трубопровода до типов вида AddIn (и обратно). Это кажется идеальной ситуацией для использования automapper.Как использовать automapper с System.AddIn?
Однако я не уверен относительно правильного использования и упаковки сторонних сборок в адаптерах HostView и AddInView, особенно когда активация AddIn находится в отдельном AppDomain.
Я попытался следующие:
добавить NuGet ссылку на automapper для проекта адаптера AddIn и создать профили отображения внутри. (Я использовал статический ctor для адаптера, который инициализирует профили, потому что MAF отвечает за создание экземпляра адаптера.)
Контр-интуитивно, чтобы получить конвейер, чтобы найти и активировать AddIns, поддерживаемые адаптером, мне пришлось обеспечить что DLL automapper жил в каталоге bin моего Хост - наличие библиотеки automapper в папке «AddInAdapters» рядом с фактической DLL-адаптером не повлияло.
С этой договоренностью мне удалось найти и активировать AddIn на моей панели разработчиков (win 7). Но те же самые двоичные файлы не будут работать на Server2008R2. (Я знаю, я знаю: я не контролирую выбор разработки или серверной ОС)
Мы используем (и нацеливаем) .Net 4.5.1 - да, это на рабочем столе и на сервере. Мы используем automapper 2.2.1 - нет, это не в GAC моего окна dev
Где должны быть размещены сторонние сборки, используемые адаптерами (как сторона AddIn, так и сторона Host). Особенно, если учитывать изоляцию AppDomain
Зачем это было сделано в Windows 7, но не 2008R2?
Спасибо за ответ. Это довольно беспорядочно: в конечном итоге я получаю копии сторонних DLL-файлов (bin dir, addin dir), за исключением фактической DLL-адаптера, потому что я не знаю, что такое изоляция AppDomain .WRT для конвейерного управления версиями, я пришел думать, что до тех пор, пока контракты и сборки просмотра являются фиксированными версиями, я могу перестраивать и передислоцировать адаптеры в мое сердцевое содержимое, не переустанавливая DLL-файлы хоста или addin или контракт/просмотр, но теперь выясняется, что если адаптер использует DLL, мне нужно загрязнить директорию bin хоста и addin dir с копией DLL, которую использует адаптер –