我编写了一个 COM 可见的简单 .NET 项目(类库)。它适用于VB6!
代码如下所示:
[ComVisible(true)]
[ClassInterface(ClassInterfaceType::AutoDual)]
public ref class MyObject
{
// Some methods and values
}
程序集已正确签名(如果不在 GAC 中则不需要)并注册 ( regasm MyProject.dll /tlb /codebase
)。
然后,在我的VB6项目中引用了TLB文件,一切正常!我可以访问我的课程和其中的公共方法。
在 Internet 上,许多人说使用ClassInterfaceType::AutoDual
不是一个好主意,因为版本控制的潜在问题可能会破坏使用该程序集的应用程序。
但是,就我而言,这真的有问题吗?此程序集仅用于 VB6 项目(早期绑定)。
在每个新版本中,我都会执行这些步骤(签名、注册等)。这个解决方案可能是任何版本控制问题吗?
无论如何,我可以写一些[GUID("...")]
属性吗?
GUID 由 Visual Studio 自动生成,因此每次编译时类的 GUID 不同。这样对吗?