C# 防止COM名称损坏

C# 防止COM名称损坏,c#,com,vb6,interop,legacy-code,C#,Com,Vb6,Interop,Legacy Code,我正在尝试编写一个VB6 dll的替换程序,该dll被c#net中的另一个VB6引用 现在我们只能在后者上下功夫,我在这方面取得了一些成功。但我遇到了一个问题 我的枚举正在被破坏,结果它被称为'a1bactrans_BACSAU',而不是'BACSAU' 遗留代码(显然)将不再编译 这能预防吗?如果是,怎么做?我听说过修改IDL,但我看不到在他们的文档中引用的是一个只有未混合的名称 提前谢谢你 伙计们,我也在c-sharpcorner讨论过这个问题,虽然我主要是自己提出了解决方案,但我已经在那里

我正在尝试编写一个VB6 dll的替换程序,该dll被c#net中的另一个VB6引用

现在我们只能在后者上下功夫,我在这方面取得了一些成功。但我遇到了一个问题

我的枚举正在被破坏,结果它被称为'a1bactrans_BACSAU',而不是'BACSAU'

遗留代码(显然)将不再编译

这能预防吗?如果是,怎么做?我听说过修改IDL,但我看不到在他们的文档中引用的是一个只有未混合的名称


提前谢谢你

伙计们,我也在c-sharpcorner讨论过这个问题,虽然我主要是自己提出了解决方案,但我已经在那里记录了它

基本上,改变IDL是我找到的方法


我很想知道是否有一种方法可以在代码中实现,也许是一个属性,但如果有一种方法我不知道

那么,您正在查看哪个IDL?.class public auto ansi sealed testaReplacement.BCStrategy扩展[mscorlib]System.Enum{.custom instance void[mscorlib]System.Runtime.InteropServices.ComVisibleAttribute::.ctor(bool)=(01 00).field public specialname rtspecialname int32 value\uuuuu.field public static literal value type TestA1Replacement.BCStrategy BCStratAV=int32(0x00000000)……more……}//类末尾TestA1Replacement.BCStrategy我在上面看不到名称损坏的证据。@Mattias OK。我认为这是“il”而不是“idl”,因此没有达到我的预期。从那以后,我使用OLE/COM对象查看器听到了这个声音。枚举{BCStrategy\u BCStratAV=0,BCStrategy\u BCStratFull=1,BCStrategy\u BCStratInfo=2,BCStrategy\u BCStratNone=3}BCStrategy;但是,当我保存并尝试使用Midl创建tbl时,我收到了大量错误:错误MIDL2088:[uuid]格式不正确在代码级别真的没有办法不损坏这些名称吗?!伙计们,我也在c-sharpcorner讨论过这个问题,虽然我主要是自己找到了解决方案,但我已经在那里做了记录。