COM互操作不暴露一些公共课程

时间:2018-05-02 20:09:44

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

我有一个使用VS 2017构建的.NET项目。选择“Make assembly COM-visible”选项并且程序集具有强名称。但是,我的一些公共课程没有向COM公开。

例如,假设我的命名空间是aa.bb.在这个命名空间中,我有各种公共类,如foo,bar和xyz。我正在注册regasm / codebase /tlb:test.tlb,它说它导出了tlb并成功注册。

检查注册表显示只公开了一些公共类,而最重要的公共类则不公开。例如,它有aa.bb.foo和aa.bb.bar,但不是aa.bb.xyz。

我用/regfile:test.reg运行了regasm,并没有把xyz类放在那里 - 只有foo和bar类。我还尝试通过这样做明确地将其列为com:

[ComVisible(true)]
public class xyz
然而,这没有任何区别。

从ASP.NET c#等本机.NET代码中我可以“使用aa.bb;”然后“xyz myObj = xyz.GetData();”这工作得很好。关于为什么这个类没有暴露给COM,有哪些原因和事情需要注意?我该如何进一步排除故障呢?谢谢!

0 个答案:

没有答案