如何在F#中创build一个COM可见的dll

我的目标是创build一个COM可见types,可以导入到VBA(Excel)并在那里消耗。

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在引用浏览器中find我的库,但没有select上面Class1定义的DotNetMethod

我试图按照C#指导这个话题,到达目前我所处的位置,但是我没有到达终点。

运行时错误

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

编译时问题

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