Конфликт с использованием объекта Office COM в системе с установленной надстройкой VSTO COM - PullRequest
0 голосов
/ 18 ноября 2009

У нас есть приложение WinForms, в котором мы должны использовать COM для взаимодействия с Excel и / или PowerPoint (я знаю, что COM-объекты являются большой проблемой, и я бы не хотел их использовать вообще, но по крайней мере на данный момент у нас нет выбора).

На некоторых компьютерах, на которых будет запускаться это приложение, также имеется настраиваемая надстройка COM VSTO, установленная в Excel и / или PowerPoint 2007. Эта надстройка работает нормально и, как и ожидалось; он загружается при запуске приложения Office, не дает сбоя и, по-видимому, имеет достаточную обработку исключений. Эта надстройка VSTO разработана нашей компанией, поэтому мы располагаем исходным кодом для внесения изменений при необходимости.

Проблема проявляется, когда COM-объект в приложении WinForms объявлен в коде. После установления соединения с этим объектом, к которому подключается приложение Office (Excel или PowerPoint), возникает загадочная ошибка, обычно по типу RPC-сервера недоступен.

Мы обнаружили, что если мы просто отключим надстройку VSTO в Excel / PowerPoint, проблема исчезнет. Очевидно, что надстройка VSTO выполняется при запуске, но мы не можем найти никаких исключений в надстройке VSTO, которые бы вызывали ошибку Excel / PowerPoint.

Таким образом, для решения этой проблемы мы можем программно отключить любые активные надстройки до того, как будет установлено соединение с COM-объектом, а затем снова включить, когда закончим. Но мы бы предпочли, чтобы это было решено правильно, если это возможно.

Я понимаю, что это, возможно, нишевая область, смешивающая надстройки VSTO и COM-объекты через код в отдельном приложении, но я надеюсь, что нам не хватает очевидного решения.

1 Ответ

0 голосов
/ 25 ноября 2009

То, как я это прочитал, заключается в том, что COM-объект фактически «захватывает» активное соединение, используемое надстройкой, и в конце концов закрывает его, оставляя надстройку с потерянным соединением. Поскольку ни код, ни ошибка не были включены в вопрос, трудно решить реальную проблему.

Чтобы исправить вашу проблему, я бы рекомендовал опубликовать ваш вопрос на форуме MSDN, касающемся VSTO, так как команда VSTO активно контролирует его. Не стесняйтесь добавлять дополнительную информацию (код, сообщения об ошибках), которую можно использовать для решения проблемы.

http://social.msdn.microsoft.com/Forums/en-US/vsto/threads

- = Мартен = -

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...