У нас есть приложение 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-объекты через код в отдельном приложении, но я надеюсь, что нам не хватает очевидного решения.