【问题标题】:Referencing an executable from F#从 F# 引用可执行文件
【发布时间】:2011-08-24 20:30:57
【问题描述】:

我使用 F# 使用来自另一个项目的数据结构进行了一些快速数据分析。为此,它需要访问该项目;即它需要一个程序集引用 - 但该项目是一个可执行文件。

我已经在 F# 交互中尝试过,它几乎可以工作*;我可以#I 适当的路径和#r 可执行文件和一些支持dll - 但我实际上不能使用它们。无论我做什么,我都无法将引用导入到已编译的 F# 程序中:VS 让我可以很好地添加引用,并且项目正确生成了适当的编译器选项 -r:X:full\path\here.exe,但是没有任何数据结构存在并且编译器抱怨不存在的命名空间;就好像引用不存在一样。该应用程序是 64 位的,这可能是相关的。 64 位 dll 工作正常。

(*) 将 fsi.exe 设置为在 64 位模式下运行后它认为它可以加载它,但实际使用它返回 FS0193:内部错误。

如何从 F# 项目中引用托管的 64 位可执行文件?

【问题讨论】:

  • 这又指stackoverflow.com/questions/3536945,看起来确实相关。奇怪的是 dll 似乎可以工作。所以这听起来不太一样。也许他们为dll修复了它?在任何情况下,将其他项目设置为 Any CPU 都是一种很好的解决方法,即使这通常是错误的做法。
  • 你能从c#中引用它吗?
  • 当然 - 这似乎是 fsi/fsc 中的一些错误,它无法读取 64 位标记程序集的标题(?)。完全相同的代码在 64 位中也可以正常工作,标记为 Any CPU。

标签: f# 64-bit f#-interactive


【解决方案1】:

对于有同样问题的其他人:作为一种解决方法,我现在将可执行文件编译为 Any CPU(它将在 64 位模式下执行,因此行为相同)。这允许 FSI 和编译器引用它。根据 cmets 中引用的问题,这似乎是一个已知错误,有望在某一天得到修复。

【讨论】:

    猜你喜欢
    • 2014-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-04
    • 2011-01-10
    • 2018-11-04
    • 2014-06-03
    相关资源
    最近更新 更多