我们建立了一个.NET COM / Excel的RTD服务器(.NET程序集),它已经使用了很多年,对各种机器(即我们知道它的工作原理,以及我们对安装它的工作原理标法)。 我们谁安装在不同的机器上这RTD分量用户,并有得到它的顺利运作的问题。 我认为这个问题涉及Interop.Microsoft.Office.Interop.Excel.dll某种程度上是要么与本机不兼容,否则注册不当。 下面是具体的细节:
虽然RTD链接工作在一定程度上,我们可以看到这个错误经常被我们的应用程序记录:
RTDServer.NotifyExcel(): Error notifying Excel, ex=System.InvalidCastException:
Unable to cast COM object of type 'System.__ComObject' to interface type
'Microsoft.Office.Interop.Excel.IRTDUpdateEvent'. This operation failed because
the QueryInterface call on the COM component for the interface with
IID '{A43788C1-D91B-11D3-8F39-00C04F3651B8}' failed due to the following error:
Library not registered. (Exception from HRESULT: 0x8002801D (TYPE_E_LIBNOTREGISTERED)).
at Microsoft.Office.Interop.Excel.IRTDUpdateEvent.UpdateNotify()
at EZomsRTDServer.RTDServer.NotifyExcel()
当我在用户的计算机上排除故障,我检查,看看是否我们的组件在COM正确注册。 我们运行这个命令与COM注册我们的组件:
C:\EZomsRTD\regasm EZomsRTDServer.dll /codebase "c:\EZomsRTD\EZomsRTDServer.dll"
C:\EZomsRTD\regasm EZomsRTDServer.dll /tlb
用户的计算机上运行这些命令产生这个错误regasm:
Type library exporter warning: Referenced type is defined
in managed component, which is imported from a type library
that could not be loaded because it was not registered
(type: 'Microsoft.Office.Interop.Excel.IRtdServer'; component:
'C:\EZomsRTD\Interop.Microsoft.Office.Interop.Excel.dll').
Assembly exported to 'C:\EZomsRTD\EZomsRTDServer.tlb', and the type
library was registered successfully
(文件:Interop.Microsoft.Office.Interop.Excel.dll是在同一文件夹作为我们的组件。)
难道这可能是由存在于被这款机器的GAC注册的Interop.Excel组件的另一个版本引起的? 任何其他可能的研究领域?
注:用户有Windows XP和Excel 2003中(相同的轮廓。他以前的机器,其工作。)
在此先感谢您的帮助。