Добавить ссылку динамически в мой проект - PullRequest
4 голосов
/ 02 сентября 2011

Я разрабатываю надстройку для Microsoft Word. В моей надстройке я использую ссылку на файл «Microsoft.Office.Interop.Word.dll», поэтому могу использовать объекты слова.

В случае, если на компьютере разработчика установлено приложение Word 2007, включаемый в ссылки файл имеет версию 12 если установлено слово 2010, файл должен быть версии 14.

как я могу создать свою надстройку и заставить ее работать независимо от того, какая версия Word установлена ​​на компьютере (другими словами, скажите моему приложению автоматически определять, какая версия Office установлена ​​и автоматически использовать соответствующий файл взаимодействия)?

1 Ответ

2 голосов
/ 02 сентября 2011

Если ваш реальный код ссылается на элементы в данной сборке, попытка подключиться к другой версии может фактически привести к ошибкам (например, если сигнатуры некоторых методов были изменены). В большинстве случаев лучшей стратегией будет создание разных сборок для разных версий DLL и установка правильной сборки на компьютере пользователя.

Существуют стратегии, которые вы можете использовать, чтобы упростить это, например, обернуть ваши вызовы в эту библиотеку в набор интерфейсов, а затем иметь две основные сборки "плагинов", которые предоставляют реализации для интерфейсов, но которые нацелены на разные библиотеки DLL, когда они реализовать их. Программное обеспечение может динамически загружать привязки реализации по конфигурации, подобно тому, как это делают популярные платформы Dependency Injection. Таким образом, если сигнатура метода изменится с одной версии на другую, вы можете просто изменить один класс, а остальная часть кода будет работать как есть.

...