所以我有一个免费注册的VB6 DLL,由我的.NET 3.5程序集库引用,最终由.NET 3.5 WinForms应用程序引用(不确定它是否相关,但包含在绘制图片中).
我收到错误'问题隔离COM引用'SomeVBDll': Registry key 'HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{dd1d7f58-1d6b-4370-a1b9-05c03816a128}\InProcServer32' is missing value '(Default)'
我最初的尝试是检查这个值是否确实存在,然后将其放置到位.这导致编译时出现相同的上述消息.
有没有人遇到过这个问题并且知道它的任何解决方案?
提前致谢.下面是直接引用VB6 dll的程序集中的清单.
<assembly xsi:schemaLocation="urn:schemas-microsoft-com:asm.v1 assembly.adaptive.xsd" manifestVersion="1.0" xmlns:asmv1="urn:schemas-microsoft-com:asm.v1" xmlns:asmv2="urn:schemas-microsoft-com:asm.v2" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" xmlns:dsig="http://www.w3.org/2000/09/xmldsig#" xmlns:co.v1="urn:schemas-microsoft-com:clickonce.v1" xmlns="urn:schemas-microsoft-com:asm.v1" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<assemblyIdentity name="Native.App.Core" version="1.0.0.0" type="win32" />
<file name="SomeVBDll.dll" asmv2:size="184320">
<hash xmlns="urn:schemas-microsoft-com:asm.v2">
<dsig:Transforms>
<dsig:Transform Algorithm="urn:schemas-microsoft-com:HashTransforms.Identity" />
</dsig:Transforms>
<dsig:DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" />
<dsig:DigestValue>BWWHQTqNGUupT8xznLoN3jn7S9Y=</dsig:DigestValue>
</hash>
<typelib tlbid="{755c1df5-d0c5-4e10-a93d-54bf186e8daf}" version="1.0" helpdir="" resourceid="0" flags="HASDISKIMAGE" />
<comClass clsid="{dd1d7f58-1d6b-4370-a1b9-05c03816a128}" threadingModel="Apartment" tlbid="{755c1df5-d0c5-4e10-a93d-54bf186e8daf}" progid="SomeVBDll.MyClass" />
</file>
</assembly>
Run Code Online (Sandbox Code Playgroud)
编辑///
将VB6 DLL中的所有类标记为MultiUse似乎已经解决了这个问题. 虽然这解决了我遇到的问题并且仍然允许我使用无reg的COM,有没有人知道一种方法来解决必须设置所有COM类Instancing到MultiUse?
我见过的唯一解决方案(如果您想避免将所有类标记为 MultiUse 可能出现的安全/维护问题)是删除“.../InProcServer32”注册表项,但该解决方法附带标准“be小心弄乱注册表”警告。
| 归档时间: |
|
| 查看次数: |
3129 次 |
| 最近记录: |