如何在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在上面的评论中提出的接口问题。
- 从Excel形状中获取形状types
- 将Excel文件读入.NET应用程序的更快的方法是:ADO.net或Microsoft.Office.Interop.Excel.Application?
- 如何运行和控制从Java的Excel实例
- 如何在.NET中清除COM引用时应用程序将保持运行?
- 读取Excel单元格并设置行颜色
- 如何closuresWindows窗体应用程序和excel.exe进程交互(可能通过垃圾收集器)?
- 无法将“System .__ ComObject”types的COM对象转换为接口types“Excel._Workbook”
- 使用Matlab来创build具有范围内X和Y值的Excel图表
- 在未安装MS Office的计算机上使用Office.Interop.Excel