我正在设置一个暴露给VB6的.NET程序集,程序集的文件名似乎干扰了VB6在创建类时使用的名称。
我正在尝试查找是否存在我可以提供的.NET属性或设置,这将允许我控制在VB6中创建的对象实例。这纯粹是一件令人沮丧的事情,我知道它只会编译下来,但我喜欢看起来不错的东西。
在我的.NET程序集中,我有以下属性,请注意ProgID似乎对编译没有任何影响。
<
ComSourceInterfaces(GetType(IManagerEvents)),
Guid(Manager.ClassId),
ClassInterface(ClassInterfaceType.None),
ProgId("IdealposWebIt.Manager")
> _
Public Class Manager
Implements IManager
在引用这个类的VB6世界中,似乎是程序集的Filename被破坏成为ProgID的一部分。
Private Sub Form_Load()
Dim orderManager As Idealpos_WebIT_Connector.Manager
Set orderManager = New Idealpos_WebIT_Connector.Manager
我能做些什么来改变它吗?我应该把它吸成公主。
请注意,一切都在VB6中正确创建和运行,但我只是希望它能很好地显示。
答案 0 :(得分:1)
经过大量搜索,并查看了在.NET中没有MIDL编译器的C ++材料,您无法控制暴露给COM的名称。
您在项目的程序集名称中使用的名称是在COM基础应用程序中使用COMified的名称(Early Bind)。所以在这种情况下,在项目中,程序集名称为Idealpos.WebIT.Connector
,然后变为Idealpos_WebIT_Connector
,因此要为COM创建一个较短的名称,您必须更改.NET项目名称,这并不总是你的乐意去做。
我希望这有助于将来的人们。