C# COM 互操作库

标签 c# vba com interop regasm

我目前正在将旧版 VBA 应用程序移植到 .Net 应用程序。在此过程中,现有 VBA 应用程序的用户需要添加一些功能。因此,我没有先使用 VBA 再使用 C# 进行编码,而是使用 C# 编写了新功能,并且希望通过 COM 将其公开给现有的 VBA 应用程序,并将其保留在当前的 .Net 应用程序版本中。

该解决方案包含多个项目,1 个 UI 项目、1 个业务逻辑项目、1 个数据访问层项目。

新功能只是修改数据的一些新形式。因此,理想情况下,他们将单击表单命令按钮来通过 COM 互操作访问这些 C# 表单。

我应该如何通过 COM Interop 公开此表单。 我希望做的只是添加另一个项目 MyProject.COM,其中将包含我的接口(interface) ICOMManager,用于公开访问启动所需表单的方法。我的 COMManager 类将仅实例化 .net 应用程序中所需的表单并显示它们。 此项目 MyProject.COM 将引用 UI 层和业务逻辑层。

当我想使用 REGASM 注册此项目时,我将如何包含对这些其他项目的引用?

感谢您提供有关如何执行此操作的任何帮助或建议。

最佳答案

啊,好吧,我发现这比我想象的要容易得多。

当我查看 regasm 生成的 reg 文件时,我可以看到 tlb(类型库)只是一个指针,指向它可以在哪里找到执行 .Net 组件的库。

因此,一旦我注册了 tlb 并确保它指向其余项目文件所在的安装目录,它就可以工作。

关于C# COM 互操作库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1698142/

相关文章:

c# - Arduino 用 Visual C# 制作的软件无法正常工作

string - VBA 字符串空格 : Preferred Method?

VBA .font.bold 优化

c++ - iTunes COM 接口(interface) - 无法将歌曲添加到资料库

c# - 从 MM/dd/yy 格式创建有效日期

c# - 在 WPF 的设计模式下获取源目录的路径

c# - Startup.cs 中的 public void 方法未在构建时运行

forms - 使隐藏的窗体在 Access 2007 中再次可见

com - 在 C++ 中调用 Visual Basic DLL,第 2 部分

c# - 为什么 regasm.exe 使用错误的 GUID 注册我的 C# 程序集?