加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Windows > 正文

使用与客户端相同的.NET版本替换COM注册的.dll时,.NET客户端崩溃

发布时间:2020-12-14 04:05:49 所属栏目:Windows 来源:网络整理
导读:我们有一个旧的C/C++ .dll是COM注册的.我们的客户拥有使用此.dll的本机和.NET客户端. 我们已经构建了一个新的.NET .dll来替换旧的.dll,它们的COM接口完全相同.我们希望在没有客户需要重新编译或对客户做任何事情的情况下更换旧的.dll. 对于本机客户端,只需取
我们有一个旧的C/C++ .dll是COM注册的.我们的客户拥有使用此.dll的本机和.NET客户端.

我们已经构建了一个新的.NET .dll来替换旧的.dll,它们的COM接口完全相同.我们希望在没有客户需要重新编译或对客户做任何事情的情况下更换旧的.dll.

对于本机客户端,只需取消注册旧的.dll并注册新的(使用regasm)即可.它也适用于某些.NET客户端.但是,在这些情况下,客户端和新的.dll都使用相同的.NET版本进行编译,它会引发下面的异常.

换句话说,这有效:

.dll is .NET 3.5 -> client is .NET 4.0
.dll is .NET 4.0 -> client is .NET 3.5
.dll is any .NET -> Client is native

这会抛出以下内容:

.dll is .NET 4.0 -> client is .NET 4.0
.dll is .NET 3.5 -> client is .NET 3.5

[A]BARAPIXLib.barcom5 cannot be cast to [B]BARAPIXLib.barcom5.

Type A originates from ‘BARAPIXLib,Version=1.0.0.0,Culture=neutral,PublicKeyToken=null’ in the context ‘LoadFrom’ at location C:arkivS_BTWBTWBARAPIXWebServiceBarapixbinBARAPIXLib.dll’.

Type B originates from ‘BartrackTest,PublicKeyToken=null’ in the context ‘Default’ at location ‘C:arkivBartrackBartrackTestx86SrcBartrackTestbinx86ReleaseBartrackTest.exe’.”}

任何想法,将不胜感激.

尝试取消注册任何以前的版本,并检查该DLL是否与可执行文件位于同一文件夹中.还试着看看你从哪里加载dll.我认为你正在加载它manualy所以看看你引用错误的DLL的地址.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读