Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
VB6将.net 4 C#COM dll从Windows 7加载到Windows XP_C#_.net_Com_Vb6 - Fatal编程技术网

VB6将.net 4 C#COM dll从Windows 7加载到Windows XP

VB6将.net 4 C#COM dll从Windows 7加载到Windows XP,c#,.net,com,vb6,C#,.net,Com,Vb6,我在.NETFramework4.5环境中创建了一个C#ComVisible类库dll,但dll目标框架设置为Framework3.5 我已经创建了COM dll,并使用Visual Studio 2012将其添加到GAC中 我将此dll作为引用添加到旧版VB6项目中(从项目->添加引用)。 一切正常。所有这些都是在Windows7中完成的 现在,我在WindowsXP上使用相同的dll,它有.NETFramework4.0。 我将dll添加到Windows XP上的GAC中。 但我无法在VB中

我在.NETFramework4.5环境中创建了一个C#ComVisible类库dll,但dll目标框架设置为Framework3.5 我已经创建了COM dll,并使用Visual Studio 2012将其添加到GAC中 我将此dll作为引用添加到旧版VB6项目中(从项目->添加引用)。 一切正常。所有这些都是在Windows7中完成的

现在,我在WindowsXP上使用相同的dll,它有.NETFramework4.0。 我将dll添加到Windows XP上的GAC中。 但我无法在VB中找到dll以将其添加为参考。 你能告诉我我可能遗漏了什么吗。在我的XP计算机中,dll位于:C:\WINDOWS\assembly\GACmsil位置

你知道我遗漏了什么吗

编辑:我还向regasm实用程序注册了程序集。
要在VB6项目的“可用引用”列表中查看COM dll,我应该对注册表进行任何更改???

为COM注册程序集时,需要调用

regasm myassembly.dll /codebase

/codebase添加VB6应用程序将用于查找DLL的相关注册表项。

您从未提到过使用Regasm.exe注册程序集。这可以通过“注册COM互操作”复选框在您的开发人员机器上自动完成,只需构建项目就足够了。不是在那台XP机器上。请确保使用正确的版本,因为您的目标是一个古老的.NET framework版本,所以您需要旧版本。请记住,VB6对此毫不关心。不,在这里,重要的是/tlb选项。这取决于用户是尝试使用VB6中第二台计算机上的DLL进行开发,还是仅尝试运行已编译的应用程序。部署时不需要tlb文件,因此如果用户只是尝试在第二台计算机上运行应用程序,则只需要/codebase。同样,不需要。当程序集安装在GAC中时,codebase选项不适用,而OP正在执行此操作。看见正如@Hans所说的,/tlb选项才是相关的。就/codebase选项而言,我是正确的。我没有将COM公开的程序集放在GAC中,因此我没有意识到这不是必需的。我仍然不明白为什么需要创建TLB。在过去的3年里,我一直在用我的应用程序分发一个COM公开的程序集,我只是用/codebase在安装目录中注册了它。我不分发或重新创建tlb。通过一点搜索,听起来如果你使用线程,在某些情况下是需要的,但我相信在大多数情况下是不需要的。谢谢大家的回复。我正在考虑将其从GAC中移出,改为私有COM组件,并使用regasm。