f# - 将 COM DLL 与 FSI 结合使用

标签 f# f#-interactive f#-scripting

在 FSI 中是否有一种方法可以引用和使用已注册的 COM 组件?

在正常的 .fs 编译程序中,我可以简单地引用有问题的组件,然后打开相关的生成的命名空间。然而,在 .fsx 文件中,我似乎无法复制这种行为。我尝试使用 #r 直接引用 .dll,并且尝试使用 #I 指向 #r 后面的目录以及库的“友好”名称和文件名,但似乎没有任何效果。

您只能从 .fsx 引用 .NET 程序集吗?我真的不想编写/生成包装程序集。我希望有一种方法可以强制 FSI 采取正常可执行文件采取的任何步骤,以提供互操作层。

最佳答案

当您在 Visual Studio 中添加对 COM 组件的引用时,它会调用一个工具来生成包装器(标准 .NET 程序集),然后引用该包装器。

如果你想从fsx引用COM,你需要自己生成包装器(或者找到由Visual Studio生成的包装器?)生成包装器的工具称为TlbImp.exe(请参阅 Type Library Importer on MSDN)。

关于f# - 将 COM DLL 与 FSI 结合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5407669/

相关文章:

F# Excel 互操作 : Marshal. GetActiveObject ("Excel.Application") 不起作用

sharepoint - F# 脚本 SharePoint 2010 API 不起作用

f# - 为什么这个 F# 表达式堆栈溢出

F# 不能在没有管道的情况下调用 Seq.fold?

f# - 如何防止 F# Interactive 在右键单击时自动打开?

f# - 运行后如何保持fsi.exe打开

unit-testing - 使用条件参数在 F# 中进行基于属性的测试

f# - 如何在 FsCheck 中生成概率

f# - 在 F# 序列中复制列表项 n 次

.net - 类型不匹配错误。 F# 类型推断失败?