F# ソースをコンパイルして Mac OS で実行するためのコマンド ラインに関するドキュメントが見つかりません。これが私が試したものですが、うまくいきませんでした。
まず、レクサー仕様ファイル「ExprLex_hj.fsl」があります。Web サイトから取得した奇妙なコマンド ラインを使用してレクサーを生成しました。
mono ~/.nuget/packages/fslexyacc/10.0.0/build/fslex/net46/fslex.exe --unicode ExprLex_hj.fsl
上記の行により、「ExprLex_hj.fs」という名前のファイルが生成されます。次に、別のWebサイトからコピーした別の奇妙なコマンドラインでその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 ファイルを実行する必要があります。Microsoft の .NET Framework のオープン ソース実装である mono で実現できると聞きました。だから、私は試しました
mono ExprLex_hj.exe
ブーム!エラーが発生しました:
未処理の例外: System.BadImageFormatException: 次の理由により、フィールド トークン 0x04000008 を解決できませんでした。 FsLexYacc.Runtime、Version=1.0.0.0、Culture=neutral、PublicKeyToken=null' またはその依存関係の 1 つ。アセンブリ:/Users/zell/test_lexer_fsharp/ExprLex_hj.exe タイプ:$ExprLex メンバー:(null)
この問題の解決方法を教えてください。問題は、F# ソース ファイルから生成された実行可能ファイルを実行する方法に関するドキュメントがほとんどないことです。ほとんどのチュートリアルでは、.FSX を使用するか、REPL で af# ファイルを実行することを提案していますが、これは私が望んでいるものではありません。生成されたバイナリをコマンド ラインから実行したいと考えています。
また、私のマシンには Visual Studio がインストールされていますが、コマンド ラインで EXE を実行する方法を知る必要があります。また、Visual Studio をインストールすると、PATH に「fshapri」、「fsharpc」、「mono」、「dotnet」が追加されました。この状況でEXEを実行するために「mono」と「dotnet」のどちらを使用する必要があるかは実際にはわかりません。