C#Com枚举和VB6

C#Com枚举和VB6,c#,com,vb6,enums,com-interop,C#,Com,Vb6,Enums,Com Interop,嗨,我创建了C#Exe Com服务器,并从VB6应用程序引用它。 问题是,在vb应用程序:EnumName_EnumeItem中,所有枚举都以“奇怪的名称”公开,而从VB6代码引用为EnumName.EnumItem 无法修改VB6应用程序代码。 我想知道,我可以通过更改tlb的idl提取来更改这个定义,但未能确切了解它是如何完成的,以及用于此工作的工具是什么 有什么建议可以轻松设置枚举吗 守则: public enum enResultCode : uint { enRCNone =

嗨,我创建了C#Exe Com服务器,并从VB6应用程序引用它。 问题是,在vb应用程序:EnumName_EnumeItem中,所有枚举都以“奇怪的名称”公开,而从VB6代码引用为EnumName.EnumItem

无法修改VB6应用程序代码。 我想知道,我可以通过更改tlb的idl提取来更改这个定义,但未能确切了解它是如何完成的,以及用于此工作的工具是什么

有什么建议可以轻松设置枚举吗

守则:

 public enum enResultCode : uint
{
    enRCNone = 0x00000000,
    enRCNotFound = 0x00000001,
    enRCFoundOnServer = 0x00000002,
    enRCFoundOnLocal = 0x00000003,
    enRCDatabaseError = 0x00000004,
    enRCAborted = 0xFFFFFFFF,
    enRCServerError = 0xFFFFFFFE,
    enRCLocalError = 0xFFFFFFFD
}
在VB6中显示为:

而不是:

enResultCode.EnumItemName

我认为您是正确的,唯一的方法是自己修改IDL。我可以告诉你一些事情是怎么做的

  • 运行tlbexp.exe从C#程序集创建tlb
  • 运行oleview.exe打开该tlb并检查IDL。您可以将该IDL保存到文件或复制/粘贴它
  • 您可以编辑IDL,为其指定所需的枚举项名称
  • 您可以运行midl.exe从修改后的IDL生成tlb

  • 这应该足够了。很抱歉,我无法为您提供所有正确的命令行开关,但我现在不在Windows计算机上。

    谢谢您的支持。我从idl创建tlb时遇到一些问题。稍后将对此进行评论(在我得到答案后)。