【问题标题】:COM VB.NET works well but C# need recompileCOM VB.NET 运行良好,但 C# 需要重新编译
【发布时间】:2011-04-01 11:58:25
【问题描述】:

我有一个带有 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 应用程序)之前,VB6 不会创建 C# 类实例(引发 ACtiveX 异常)。

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

这里 C# 和 VB.NET 有什么区别?有什么方法可以让 C# 表现得像 VB.NET?

【问题讨论】:

  • 抛出的 ActiveX 异常是什么?

标签: c# .net vb.net com interop


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-30
      • 1970-01-01
      • 2014-11-08
      • 2018-05-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多