为COM客户端设置COM显示的名称/程序集/类的ProgID

时间:2012-07-11 01:18:01

标签: .net com

我正在设置一个暴露给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中正确创建和运行,但我只是希望它能很好地显示。

1 个答案:

答案 0 :(得分:1)

经过大量搜索,并查看了在.NET中没有MIDL编译器的C ++材料,您无法控制暴露给COM的名称。

您在项目的程序集名称中使用的名称是在COM基础应用程序中使用COMified的名称(Early Bind)。所以在这种情况下,在项目中,程序集名称为Idealpos.WebIT.Connector,然后变为Idealpos_WebIT_Connector,因此要为COM创建一个较短的名称,您必须更改.NET项目名称,这并不总是你的乐意去做。

我希望这有助于将来的人们。