COM VB.NET运行良好,但C#需要重新编译

COM VB.NET运行良好,但C#需要重新编译,c#,.net,vb.net,com,interop,C#,.net,Vb.net,Com,Interop,我有一个带有COM属性的简单C#类: [ComClass("1DC7B465-49FA-4ad1-893E-C19657E1ED25", "F97459E6-AB37-43e6-AC57-6AE5F9A9A835", "BD9F01C7-162A-4f95-9398-C126C152B965")] [ComVisible(true)] public class Class1 { } 我需要使用VB6应用程序中的此类。在我更改.NET dll的AssemblyV

我有一个带有COM属性的简单C#类:

[ComClass("1DC7B465-49FA-4ad1-893E-C19657E1ED25", "F97459E6-AB37-43e6-AC57-6AE5F9A9A835", "BD9F01C7-162A-4f95-9398-C126C152B965")]
    [ComVisible(true)]
    public class Class1
    {

    }
我需要使用VB6应用程序中的此类。在我更改.NET dll的AssemblyVersion之前,它工作得很好。然后VB6不会创建C#类实例(抛出ACtiveX异常),直到我重新编译它(VB6应用程序)

有趣的是,如果Class1是用VB.NET编写的,我不需要重新编译它


C#和VB.NET之间的区别是什么?有没有办法使C#的行为类似于VB.NET?

最可能的区别是由两个项目向导生成的标准AssemblyInfo.cs和AssemblyInfo.VB之间的差异。您可以比较这两个属性,以查看是否有任何程序集级别属性不同。顺便说一句,我会打赌版本属性。

我查看了C#和VB.NET编译器生成的程序集,发现VB.NET除了ComClass属性之外还生成Guid属性。C#没有做到。因此,我显式地将Guid属性添加到C#class中,它解决了我的问题。

引发的ActiveX异常是什么?