我正在开发一个基于.NET 4.5的项目,该项目引用了基于.NET 3.5的.dll。
此错误已经出现,我的同事能够找到一个解决方案,包括添加或删除注册表项,但他无法记住他是如何找到解决方案的。
在这个网站和互联网上还有很多关于如何处理这个异常的hub-bub,如果可能的话,找到一个通用的解决方案可能会很好。
以下是我所知道的:以下代码行引发了此错误:
ApplicationClass AC = new ApplicationClass();
我在其他地方已经读过,现在对ApplicationClass的使用不满意了,但是我现在对此没什么用了,因为它所使用的.dll正在我使用的多个应用程序中使用不能碰。
无论如何,问题是在执行此行之后,每个AC的字段都没有初始化,而是抛出System.InvalidCastException。
但是,这本身并不会引起问题。只有在执行以下行时才会抛出导致问题的实际异常:
AC.Documents.Open(filePath, true);
以下是在.NET 4.5上运行的外部应用程序引发的错误。
A first chance exception of type 'System.InvalidCastException' occurred in mscorlib.dll
2016-07-14 09:40:22 Error 9 System.InvalidCastException: Unable to cast COM object of type 'LabelManager2.ApplicationClass' to interface type 'LabelManager2.IApplication'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{3624B9C3-9E5D-11D3-A896-00C04F324E22}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
at System.RuntimeType.InvokeDispMethod(String name, BindingFlags invokeAttr, Object target, Object[] args, Boolean[] byrefModifiers, Int32 culture, String[] namedParameters)
at System.RuntimeType.InvokeMember(String name, BindingFlags bindingFlags, Binder binder, Object target, Object[] providedArgs, ParameterModifier[] modifiers, CultureInfo culture, String[] namedParams)
at System.RuntimeType.ForwardCallToInvokeMember(String memberName, BindingFlags flags, Object target, Int32[] aWrapperTypes, MessageData& msgData)
at LabelManager2.ApplicationClass.Quit()
有谁知道如何解决这个问题?我已经尝试过StackOverflow上其他线程的方法无济于事,非常感谢任何帮助!
答案 0 :(得分:-1)
这最终可通过删除我正在处理的版本(v1.2),安装和卸载以前的版本(v1.1),然后重新安装v1.2来解决。
我尝试使用regasm.exe手动注册我正在使用的dll但是由于某些我不知道的原因它不会注册。
简短形式:安装以前的版本,让它注册必要的dll。