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

时间:2010-08-20 05:20:42

标签: 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的AssemblyVersion。然后VB6不会创建C#类实例(抛出ACtiveX异常),直到我重新编译它(VB6应用程序)。

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

C#和VB.NET有什么区别?有没有办法让C#表现得像VB.NET?

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:0)

我查看了C#和VB.NET编译器生成的程序集,发现除了ComClass属性外,VB.NET还生成了Guid属性。 C#没有这样做。所以我已经明确地将Guid属性添加到C#类中,它解决了我的问题。