And*_*y E 12 .net javascript strongname assemblies com-interop
我的一位同事在VB.net中创建了一个程序集,用于通过COM互操作与JScript一起使用.组件过去工作正常,但我们签了它,现在它似乎只适用于Windows 7机器.我测试了2台Windows 7机器和2台Windows Vista机器.
当我们签署程序集并尝试在JScript中实例化ActiveX对象时,将返回一个错误,但没有消息,只有一个数字:
错误:
错误号:-2146234304
在Google上搜索错误编号并没有太多回复.
如果我们从程序集中删除强名称,它就可以正常工作.关于什么可能是问题的任何想法?不确定它是否有所作为,但正在使用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/ms229864(v=VS.80).aspx)的问题.HKLM\Software\Microsoft\Fusion之前可能需要对注册表进行一些更改(如EnableLog,LogFailures,
如果您不能解决问题的方式,您可以发布一个项目的链接,可以用来重现您的问题.
错误代码ix 0x80131040.这是一个匹配.NET异常的代码,非常常见.
定位的程序集的清单定义与程序集引用不匹配.
我很惊讶你没有得到它的消息,你可能想要检查你的错误处理代码.Anyhoo,你有一些DLL Hell正在进行,CLR正在寻找一个程序集,其[AssemblyVersion]或PublicKeyToken与用于构建代码的引用程序集不匹配.鉴于这与强名称程序集相关联,您可能在构建代码后签署了程序集.在这种情况下,只需从项目中删除程序集引用并将其添加回来,现在选择强名称程序集,将解决问题.
但是无需猜测,Fuslogvw.exe实用程序会告诉您到底出了什么问题.首先运行它以获取绑定尝试的跟踪及其失败的原因.
| 归档时间: |
|
| 查看次数: |
3467 次 |
| 最近记录: |