Мы создали сборку RTD-сервера, которая широко использовалась в течение нескольких лет. (Он был построен с VS 2008, .NET 3.5 Target Runtime.) Сегодня пользователь сообщил, что получил следующее исключение:
System.InvalidCastException: невозможно преобразовать COM-объект типа
'System .__ ComObject' для типа интерфейса
'Microsoft.Office.Interop.Excel.IRTDUpdateEvent. Эта операция
не удалось, потому что вызов QueryInterface на компонент COM для
сбой интерфейса с IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}'
на следующую ошибку: такой интерфейс не поддерживается (исключение из
HRESULT: 0x80004002 (E_NOINTERFACE)). в
Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify () в
EZomsRTDServer.RTDServer.NotifyExcel ()
Он работал нормально вчера. Кажется, проблема была вызвана тем, что он установил новое приложение, которое побудило его установить обновление .NET 4. (У него уже был установлен .NET 4, поэтому не уверен, что это за обновление.) Пользователь решил проблему, откатившись до вчерашней точки восстановления (на которой все еще работал .NET 4). Но нам нужно понять, что могло произойти во время установки, чтобы вызвать проблему совместимости COM. (Он не трогал Excel или наше приложение RTD).
Возможно ли, что одна из инсталляций использовала Guid из IRTDUpdateEvent для какого-то другого класса COM?