我有一个带有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?
答案 0 :(得分:2)
最可能的区别在于两个项目向导生成的标准AssemblyInfo.cs和AssemblyInfo.vb。您可以比较这两个以查看是否有任何程序集级属性。顺便说一句,我打赌版本属性。
答案 1 :(得分:0)
我查看了C#和VB.NET编译器生成的程序集,发现除了ComClass属性外,VB.NET还生成了Guid属性。 C#没有这样做。所以我已经明确地将Guid属性添加到C#类中,它解决了我的问题。