c# - COM 互操作不公开一些公共类
问题描述
我有一个用 VS 2017 构建的 .NET 项目。选择了“使程序集 COM 可见”选项,并且程序集被强命名。然而,我的一些公共课程并未暴露给 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 的一些原因和事情是什么?请问我该如何进一步解决这个问题?谢谢!
解决方案
推荐阅读
- angular - Angular mat-sidenav 通过 Observable 打开关闭
- java - 当我打开在 android studio 中创建的应用程序时,如何解决这个错误?
- ruby-on-rails - Rails 范围方法返回 WhereChain 而不是数组
- python - 尽管对 theta 和 phi 使用均匀分布,但用于球体生成的点非常密集的区域
- java - 如何将 DataFrame 转换为 csv 文件并将其放入远程 SFTP 服务器?
- .net - Autofac将参数传递给构造函数
- reactjs - 使用 React 以嵌套菜单的形式显示数组响应
- python - 将熊猫数据框的索引设置为浮点数列表?
- javascript - 如何在javascript中链接到另一个页面?
- angular - ionic4中的CORS问题