我没有在命令行上找到用于编译 F# 源代码然后在 Mac OS 上运行它的文档。这是我尝试过的,但没有奏效。
首先,我有一个词法分析器规范文件“ExprLex_hj.fsl”。我使用从网站获取的奇怪命令行生成了词法分析器:
mono ~/.nuget/packages/fslexyacc/10.0.0/build/fslex/net46/fslex.exe --unicode ExprLex_hj.fsl
上面的行生成了一个名为“ExprLex_hj.fs”的文件。然后我用从另一个网站复制的另一个奇怪的命令行编译了那个 f# 文件
fsharpc -r ~/.nuget/packages/fslexyacc/10.0.0/build/fsyacc/net46/FsLexYacc.Runtime.dll ExprLex_hj.fs
上面的这一行在我的 Mac OS 上生成了一个 EXE 文件,ExprLex_hj.exe
. 现在我需要运行这个 EXE 文件。我听说我们可以使用 mono,这是 Microsoft 的 .NET Framework 的开源实现。所以,我尝试了
mono ExprLex_hj.exe
繁荣!我收到一个错误:
未处理的异常:System.BadImageFormatException:无法解析字段令牌 0x04000008,原因是:无法加载字段类型“<StartupCode$ExprLex_hj>.$ExprLex:_fslex_tables@24”(2),原因是:无法加载文件或程序集“ FsLexYacc.Runtime、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' 或其依赖项之一。程序集:/Users/zell/test_lexer_fsharp/ExprLex_hj.exe 类型:$ExprLex 成员:(空)
你能告诉我如何解决这个问题吗?问题是关于如何运行从 F# 源文件生成的可执行文件的文档很少。大多数教程建议使用 .FSX 或在 REPL 上运行 af# 文件,这不是我想要的——我想从命令行执行生成的二进制文件。
此外,在我的机器上,我安装了 Visual Studio,但我仍然需要知道执行 EXE 的命令行方式。此外,在安装 Visual Studio 后,我的 PATH 中出现了“fshapri”、“fsharpc”、“mono”和“dotnet”。我实际上不确定在这种情况下是否应该使用“mono”或“dotnet”来运行 EXE。