Выбор COM-объекта Office 2003/2007 (правильного) в приложении Winforms
Вопрос
Мы создаем приложение 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 не помогли бы в этом?Я не знаю наверняка, поскольку мне не приходилось использовать их всерьез, но я думаю, что они бы это сделали.