1

我正在设置一个暴露给 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 世界中,当引用此类时,似乎是程序集的文件名被破坏成为 ProgID 的一部分。

Private Sub Form_Load()
    Dim orderManager As Idealpos_WebIT_Connector.Manager
    Set orderManager = New Idealpos_WebIT_Connector.Manager

我能做些什么来改变它吗?我应该把它吸吮公主吗?

请注意,一切都在 VB6 中正确创建和运行,但我希望它能够很好地显示。

4

1 回答 1

1

经过大量搜索和查看 C++ 材料后,如果没有 .NET 中的 MIDL 编译器,您将无法控制向 COM 公开的名称。

您在项目的程序集名称中使用的任何名称都是经过 COM 化以在基于 COM 的应用程序中使用的名称(早期绑定)。因此,在这种情况下,在项目中,程序集名称会Idealpos.WebIT.Connector变成Idealpos_WebIT_Connector这样,以便为 COM 创建一个较短的名称,您将不得不更改您的 .NET 项目名称,这并不总是您愿意做的事情。

我希望这对未来的人们有所帮助。

于 2012-07-17T07:15:46.940 回答