数年間広く使用されている RTD サーバー アセンブリを構築しました。(これは VS 2008、.NET 3.5 ターゲット ランタイムでビルドされました。) 今日、あるユーザーから次の例外が報告されました。
System.InvalidCastException: タイプ 'System.__ComObject' の COM オブジェクトをインターフェイス タイプ 'Microsoft.Office.Interop.Excel.IRTDUpdateEvent' にキャストできません。IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}' を持つインターフェイスの COM コンポーネントでの QueryInterface 呼び出しが次のエラーのために失敗したため、この操作は失敗しました: No such interface supported (HRESULT からの例外: 0x80004002 (E_NOINTERFACE)) . Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify() で EZomsRTDServer.RTDServer.NotifyExcel() で
彼は昨日元気に走っていた。この問題は、彼が .NET 4 更新プログラムをインストールするよう促した新しいアプリケーションをインストールしたことが原因であると思われます。(彼は既に .NET 4 をインストールしていたので、この更新が何であったかはわかりません。) ユーザーは昨日の復元ポイント (まだ .NET 4 を実行していた) にロールバックすることで問題を解決しました。しかし、COM 互換性の問題を引き起こすために、インストール中に何が起こった可能性があるかを理解する必要があります。(彼は Excel や RTD アプリケーションには触れませんでした)。
インストールの 1 つが他の COM クラスの IRTDUpdateEvent の Guid を使用した可能性はありますか?