重新分配C#dll以供VB6

时间:2015-05-20 13:30:16

标签: .net vb6 interop tlb

我们创建一个与VB6一起使用的C#dll(ComVisible = true,Register for COM Interop)。 在开发者PC上的VB6中,一切正常。

我们尝试在另一台PC上重新分发它。我们知道我们应该在 x64 Windows上使用以下命令行重新生成 tlb 文件

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\CLYO\Clyo.Interfaces.dll /tlb:C:\CLYO\Clyo.Interfaces.tlb 

我们也尝试使用代码库

C:\Windows\Microsoft.NET\Framework64\v4.0.30319\RegAsm.exe C:\CLYO\Clyo.Interfaces.dll /tlb:C:\CLYO\Clyo.Interfaces.tlb /codebase

但我们继续获得Error 429 - ActiveX component can't create object

任何想法?

注意:我们的C#代码为每个类和接口

使用不同的Guid
[InterfaceType(ComInterfaceType.InterfaceIsDual)]
[Guid("EC8D67C4-0B8B-4692-9CA4-8657805D9B40")]
public interface IRestoFlash
{
    ...
}

[ClassInterface(ClassInterfaceType.None)]
[Guid("D068F8B5-AAC8-48D2-BEED-4505DBC802D6")]
[ProgId("Clyo_Interfaces.RestoFlash")]
public class RestoFlash:IRestoFlash 
{
    ...
}

1 个答案:

答案 0 :(得分:0)

使用Regasm x32的路径解决了问题......

C:\Windows\Microsoft.NET\Framework\v4.0.30319\RegAsm.exe 
                                 ^^ (without 64)