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

将应用程序从.NET 3.5升级到4.0,COM现在失败,com,.net-4.0,Com,.net 4.0,我有一个应用程序正在从.NET3.5升级到.NET4.0框架。它使用引用的COM库。它在3.5中工作没有问题,但在转换到4.0后,我在让COM工作时遇到了问题。COM来自第三方,所以我们没有自己开发 我得到以下COM错误(通用COM错误,不特定于COM对象本身):hr=0x8007000b CLR告诉我:“对与指定绑定约束匹配的类型“Skype\u Business\u Launcher.Main”的构造函数的调用引发了异常。“行号“3”和行位置“5” 以及C#log: ==预绑定状态信息===

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

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

CLR告诉我:“对与指定绑定约束匹配的类型“Skype\u Business\u Launcher.Main”的构造函数的调用引发了异常。“行号“3”和行位置“5”

以及C#log:

==预绑定状态信息=== 日志:User=\phillip 日志:DisplayName=Interop.SKYPE4COMLib,版本=1.0.0.0,区域性=neutral,PublicKeyToken=null (详细说明) 日志:Appbase=file:///bin/Debug/ 日志:初始PrivatePath=NULL

调用程序集:Skype Business Launcher,版本=1.0.5.0,区域性=中性,PublicKeyToken=null。 日志:此绑定在默认加载上下文中启动。 日志:使用应用程序配置文件: 日志:使用主机配置文件: 日志:使用C:\Windows\Microsoft.NET\Framework64\v4.0.30319\config\machine.config中的计算机配置文件。 日志:此时未将策略应用于引用(私有、自定义、部分或基于位置的程序集绑定)。 日志:正在尝试下载新URLfile:///bin/Debug/Interop.SKYPE4COMLib.DLL. 错误:未能完成程序集的设置(hr=0x8007000b)。调查结束了

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

起初,我得到一个关于COM库不支持嵌入式类型的错误,所以我将“嵌入互操作类型”设为false(下面是true),错误消失了,但我不确定这是否与此错误有关,所以我想我会提到它以防万一

同样,3.5版的效果也不错


谢谢,

暗中拍摄:看起来您正在使用x64版本的框架。3.5已经是这样了吗?COM服务器是DLL还是EXE


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

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


当您将项目转换为4.0版本时,请删除com库,然后将其重新包含在项目中,然后我认为它应该可以正常工作。

A shot in dark:看起来您使用的是x64版本的框架。3.5已经是这样了吗?COM服务器是DLL还是EXE?嗯。。不确定3.5是32位还是64位。事实上,我认为他们把它设置为“任何CPU”。这让我们怀疑COM是否只有32位。明天我将尝试强制使用32位模式并报告。COM是一个DLL。它没有EXE条目或接口。如果COM是DLL,则DLL和程序之间需要有一个“位”匹配。@Timores说得对!将项目更改为仅32位目标,COM可以正常工作!谢谢(您能否将您的回答“黑暗中的一枪”设置为答案,以便我可以将其标记为正确答案?)。