Выбор COM-объекта Office 2003/2007 (правильного) в приложении Winforms

StackOverflow https://stackoverflow.com/questions/158428

Вопрос

Мы создаем приложение Windows Form (C # или VB.NET), которое должно ссылаться на COM-объект Office 2003 или Office 2007, в зависимости от установленной версии office.Каков наилучший способ справиться с этим сценарием и ссылаться на правильный COM-объект во время выполнения?

Это было полезно?

Решение

Если вы не хотите использовать какие-либо из недавно добавленных объектов и методов объектной модели Office 2007, вполне допустимо создавать ссылки на PIA Office 2003, просто убедитесь, что в целевой системе развернута правильная версия PIA:

Другой способ обойти эту проблему - удалить зависимость от более поздних PIA.Из-за высокой степени обратной совместимости в Office можно с уверенностью предположить, что если ваша надстройка работает в Office 2003 (с PIA Office 2003), то она также должна работать в Office 2007 (с PIA Office 2007).

(из Надстройки для нескольких версий Office без PIA автор: Эндрю Уайтчепел)

В противном случае я бы порекомендовал вам следующие статьи в блоге Эндрю Уайтчепела: Можете ли вы создать одну надстройку для нескольких версий Office? (Смотрите БОЛЬШОЕ предупреждение о том, что это официально не поддерживается корпорацией Майкрософт).

Другим вариантом, когда вам не нужны PIA (это намного упрощает развертывание), было бы использовать Входящий вместе с поздним переплетом.Однако это медленнее, чем использование сборок взаимодействия, но если код автоматизации не находится на быстром пути, это может быть хорошим решением.Вы найдете объяснение, как это реализовать, в том же сообщении в блоге: Надстройки для нескольких версий Office без PIA

Другие советы

Разве основные сборки взаимодействия для Office не помогли бы в этом?Я не знаю наверняка, поскольку мне не приходилось использовать их всерьез, но я думаю, что они бы это сделали.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top