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

How to create a COM visible dll in F#

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

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

我的 F# 代码:

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

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

I 运行 regasm with switches /codebase /tlb and an .tlb file is generated.

VBA 在参考浏览器中找到了我的库,但没有找到上面 Class1 上定义的 DotNetMethod

我已尝试按照本主题的 C# 指南到达我目前所在的位置,但我没有到达终点。

运行-时间错误

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

编译时问题

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