Общий код между двумя надстройками внешнего вида VSTO
У нас есть ситуация, когда у нас будет две надстройки VSTO Outlook, которые начинаются с некоторого общего общего кода, но общий код, вероятно, со временем будет расходиться. В идеале, мы хотели бы реструктурировать надстройки, чтобы разделить общий код в отдельную общую библиотеку DLL, но по нетехническим причинам это сейчас не вариант. Какие проблемы вы ожидаете, если обе надстройки развернуты в одном экземпляре Outlook? Вы видите проблемы, возникающие из-за того, что будут два класса с одним и тем же именем и тем же пространством имен, но с разными определениями, загруженными двумя разными надстройками в один и тот же экземпляр Outlook? Также одна из надстроек должна вызывать форму в другой надстройке. Как вы думаете, это будет проблемой с различиями в общем коде?
Предполагая, что нам удастся реструктурировать надстройки, чтобы отделить dll от всего общего кода, возникнет ли у Outlook проблема с различными версиями одной и той же dll, развертываемой двумя разными надстройками?
1 ответ
В моем текущем проекте был сделан похожий обмен кодами между надстройками VSTO для Word. На данный момент мы используем ссылки на другой проект с "copy local" во время компиляции, но хотели бы переключить его для ссылки на общий код из GAC, чтобы мы освободились от сценария создания общего компонента, требующего перестроения всех проектов, которые зависят от этого.
Если все dll вашей общей библиотеки "копируются локально" во время сборки, у вас не должно быть никаких конфликтов имен / пространств имен - но вам нужно будет перестраивать надстройку всякий раз, когда изменяется код вашей общей библиотеки. Если вы хотите, чтобы сборки обрабатывались отдельно, создайте надстройку, которая будет служить библиотекой, которая устанавливает свою копию в GAC, чтобы ее могли использовать другие надстройки. Я включил несколько ссылок, которые показывают, как вызывать код из других надстроек. На практике я находил это немного глупым из-за того, что VSTO был.Net поверх собственного кода Office.
Рекомендации: