我的一位同事在 VB.net 中创建了一个程序集,以便通过 COM 互操作与 JScript 一起使用。该程序集过去运行良好,但我们对其进行了签名,现在它似乎只能在 Windows 7 计算机上运行。我测试了 2 台 Windows 7 机器和 2 台 Windows Vista 机器。
当我们对程序集进行签名并尝试在 JScript 中实例化 ActiveX 对象时,会返回一个错误,没有消息,只有一个数字:
Error:
错误号:-2146234304
在谷歌上搜索错误号并没有得到太多结果。
如果我们从程序集中删除强名称,它就可以正常工作。关于可能出现什么问题有什么想法吗?不确定它是否有什么不同,但程序集正在使用 VS 2010 进行编译和签名。
您是否在程序集签名后重新创建了 COM Interop?如何注册新版本的程序集?您是否清除了 Internet Explorer 的缓存?
一般来说,错误-2146234304(0x80131040)意味着FUSION_E_REF_DEF_MISMATCH
:“找到的程序集的清单定义名称为 [yourAssembly] 与程序集引用不匹配”。因此,您必须更新使用签名程序集的程序集清单。您应该了解它在您的情况下到底意味着什么。对程序集的引用也保存在Assembly
的价值HKEY_CLASSES_ROOT\CLSID\{YOUR_GUID}\InprocServer32
而且不仅仅是在真实的表现中。
您可以尝试调查以下方面的问题Fuslogvw.exe(程序集绑定日志查看器) http://msdn.microsoft.com/en-us/library/e74a18c4.aspx (or http://msdn.microsoft.com/en-US/library/ms229864(v=VS.80).aspx http://msdn.microsoft.com/en-US/library/ms229864(v=VS.80).aspx)。注册表中的一些更改HKLM\Software\Microsoft\Fusion
之前可能需要(例如EnableLog、LogFailures、
如果您无法以这种方式解决问题,您可以发布一个可用于重现您的问题的项目链接。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)