Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/273.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
C# vb6正在锁定旧引用_C#_.net_Vb6 - Fatal编程技术网

C# vb6正在锁定旧引用

C# vb6正在锁定旧引用,c#,.net,vb6,C#,.net,Vb6,我创建了一个包装类来将CLR4(.net)加载到CLR2(vb6)中。在某种程度上,它是有效的 我在.net(4.0)中编译程序,并运行批处理文件来创建.tlb。我引用了vb6程序中的.tlb,一切都很棒 当我更改包装并重做上述过程时,vb6将看不到新的.tlb,它仍然使用旧的 …有什么问题吗?在部署新tlb之前,请尝试取消注册旧tlb。打开cmd shell并键入“regsvr32/u mytlb.tlb”,然后部署新的命令,并在不使用/u开关的情况下再次运行regsvr32 有关更多信息,请

我创建了一个包装类来将CLR4(.net)加载到CLR2(vb6)中。在某种程度上,它是有效的

我在.net(4.0)中编译程序,并运行批处理文件来创建.tlb。我引用了vb6程序中的.tlb,一切都很棒

当我更改包装并重做上述过程时,vb6将看不到新的.tlb,它仍然使用旧的


…有什么问题吗?

在部署新tlb之前,请尝试取消注册旧tlb。打开cmd shell并键入“regsvr32/u mytlb.tlb”,然后部署新的命令,并在不使用/u开关的情况下再次运行regsvr32


有关更多信息,请参阅。

我们在工作中遇到了类似的情况(托管.net程序集的vb6应用程序)

您想运行REGASM/unregister*.dll。*.tlb是运行REGASM/tlb的产品


如果您的.net项目已注册为COM互操作,它应该在任何构建时为您注册。

我理解这一点,这也是我的想法,但是我没有注册tlb文件,也无法注销tlb文件,因为它不是有效的.net程序集,这是我尝试使用
CreateObject()的原因
方法,而不是添加它的引用。这就是我正在做的,我解决它的方法是到处删除每个.dll,重建它,然后重新运行批处理文件,这就解决了我的问题。但是,这并不是一个好的长期解决方案,您只需要注册一次(这将在regedit中的HKEY_CLASSES_ROOT\TypeLib下放置一个条目),除非您移动文件,例如在合并到另一个分支后。听起来你在重建.NET时打开了VB。这将是一个问题。先关闭VB。