gpt4 book ai didi

.net - 一旦签名,COMVisible 程序集的 CreateObject 将失败

转载 作者:行者123 更新时间:2023-12-02 01:54:26 25 4
gpt4 key购买 nike

我们有一个 COM 可见的 .NET exe(.NET 3.5、VS 2010 SP1、VB.NET)项目。 VB6 应用程序使用 CreateObject 从此程序集中创建对象。
如果我们不签署程序集,这将毫无问题地工作。如果我们签署程序集(使用 pfx 证书),CreateObject 将失败并显示消息

Can't create Object "Our.ClassName"

很遗憾,事件日志中没有条目。 .NET exe 可以毫无问题地启动,因此所有依赖项都应该就位。我们还启用了 .NET 绑定(bind)日志记录,但在调用 CreateObject 时它不会写入任何内容(因此我们怀疑创建在加载程序集之前失败)。
我们已经跟踪了所有更改,唯一重要的区别是程序集是否已签名。我们也尝试了不同的证书,但行为没有改变。

有没有人以前经历过这种行为并且可以提供解决方案?有什么方法可以为我们提供有关故障的更多信息?

最佳答案

强命名程序集会更改其 PublicKeyToken。这是程序集的完全限定名称的一部分,它在注册程序集时记录在注册表中。例如,运行 Regedit.exe 并导航到 HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Classes\CLSID\{00000100-0000-0010-8000-00AA006D2EA4}\InprocServer32,程序集值。你会看到:

dao, Version=10.0.4504.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35

所以签名后再次注册程序集是一个硬性要求。再次运行 Regasm.exe。

不要忘记,如果您不使用/codebase 选项,则必须将程序集放入 GAC。这是首先给程序集起一个强名称的通常原因。

关于.net - 一旦签名,COMVisible 程序集的 CreateObject 将失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20998769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com