如何在 F# 中创建 COM 可见的 dll



我的目标是创建一个可以导入VBA(Excel)并在那里使用的COM可见类型。

Excel 对象浏览器可以看到我的类,但看不到该类的任何公共方法,并且在尝试调用公共方法时失败。

我的 F# 代码:

namespace DotNetLibrary
type public Class1() = 
    member public  this.DotNetMethod (x:string) = "Hello" + x

在AssemblyInfo.fs中,我也修改为[<assembly: ComVisible(true)>]

我用/codebase /tlb开关运行 regasm 并生成一个 .tlb 文件。

VBA 在引用浏览器中找到我的库,但不会选取上面Class1中定义的DotNetMethod

我已尝试遵循本主题的 C# 指南来达到我目前所处的位置,但我没有到达终点线。

运行时

错误

VBA 无法成功运行该方法的原因是因为我使用了 32 位版本的 regasm 实用程序而不是 64 位版本来注册 COM 的类型库。鉴于我使用的是 64 位 Excel,它需要 64 位 COM 类型库。

编译时问题

VBA 无法识别 IDE 中的方法的原因可能与上述原因有关,但也可能是由于@HansPassant在他上面的评论中。

最新更新