将应用程序从.NET 3.5升级到4.0,COM现在失败了

时间:2010-04-19 14:46:31

标签: com .net-4.0

我有一个应用程序,我正在从.NET 3.5升级到.NET 4.0框架。它使用引用的COM库。它在3.5中没有问题,但在转换为4.0后,我遇到了让COM工作的问题。 COM来自第三方,所以我们自己没有开发它。

我收到以下COM错误(通用COM错误,不是特定于COM对象本身):hr = 0x8007000b

CLR告诉我:'在类型'Skype_Business_Launcher.Main'上调用与指定绑定约束相匹配的构造函数会引发异常。行号“3”和行位置“5”。

和C#记录:

===预绑定状态信息=== 日志:用户= \ phillip 日志:DisplayName = Interop.SKYPE4COMLib,版本= 1.0.0.0,Culture = neutral,PublicKeyToken = null  (完全指定的) 日志:Appbase = file:/// bin / Debug / 日志:初始PrivatePath = NULL

呼叫程序集:Skype Business Launcher,版本= 1.0.5.0,Culture = neutral,PublicKeyToken = null。

日志:此绑定在默认加载上下文中启动。 日志:使用应用程序配置文件: 日志:使用主机配置文件: 日志:使用C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \ config \ machine.config中的计算机配置文件。 日志:此时策略未应用于引用(私有,自定义,部分或基于位置的程序集绑定)。 日志:尝试下载新的URL文件:///bin/Debug/Interop.SKYPE4COMLib.DLL。 错误:无法完成程序集的设置(hr = 0x8007000b)。探测终止。

出于安全原因我删除了路径名,但我检查了所有路径信息,这一切都是正确的。 COM库文件也存在于它所指向的位置。它也被复制到项目中的OBJ文件夹中。

最初我收到一个关于不支持嵌入式类型的COM库的错误所以我将“嵌入互操作类型”设置为错误(下面是真的)并且错误消失但是我不确定这是否与此错误或不是这样我以为我会提到它以防万一。

再一次,它适用于3.5。

谢谢,

2 个答案:

答案 0 :(得分:3)

在黑暗中拍摄:看起来你正在使用框架的x64版本。那是3.5的情况吗? COM服务器是DLL还是EXE?

如果COM服务器是DLL,则DLL和程序之间需要存在“位”匹配。

答案 1 :(得分:0)

将项目转换为4.0时,IDE可以执行将COM库转换为4.0的问题。

当你将你的项目转换为4.0删除com库然后重新将它包含在你的项目中然后我认为它应该是有用的。