2017-08-25 9 views
2

.fsxファイルをダブルクリックすると、スクリプトは実行直後に終了します。スクリプトとやりとりしたり、スクリプトの動作を確認する機会はありません。実行直後のF#スクリプトの終了(FSI)

スクリプトの1つがWinFormsウィンドウを作成するのがほとんど見えますが、すぐに終了します。

私は(.cmdのファイルへの送信を含む)いくつかのデフォルトの実行アクションを試してみました:

"C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsi.exe" "%1" %* 
"C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsi.exe" --quiet --exec "%1" 
+1

コマンドラインから実行するとどうなりますか? – TheQuickBrownFox

+0

それはスクリプトがしなければならないものです:実行してください。なぜあなたは彼らがぶらぶらしていると思いますか? –

+0

コマンドラインから実行すると、同じ動作を示します。 – Gordon

答えて

2

あなたがしようとした両コマンドラインが実際にスクリプトを実行して終了します。スクリプトと対話するようにREPLを開いたままにしたい場合は、--load:file.fsxまたは--use:file.fsxのいずれかが必要です。

  • --use:file.fsxだけFSI実行した後、REPLにfile.fsxの内容を貼り付けるとほぼ同じこと。たとえば、ファイルにlet x = 2が含まれている場合は、すぐにx;;と入力すると認識されます。これは、ファイルに値、文、型、モジュールの束が含まれている場合に必要なものです。

  • --load:file.fsxは、fsiを実行して、#load "file.fsx"と入力するとほぼ同じです。これは、このファイルで定義された値が別の名前空間にあることを意味します。これは、ファイルがnamespaceまたはmodule宣言で始まる場合に必要なものです。

+0

スイッチを上記のように使用しますか?または、 "file.fsx"を "%1"(または同様のワイルドカード)に置き換えますか?私はスクリプトファイル( "fsx"ファイルタイプ)のデフォルトの実行アクションにコマンドを使用しています。 – Gordon

+0

"file.fsx"の代わりにファイル名を入れてください。ここで "%1"を入れる必要があります。 – Tarmil

+0

"C:¥Program Files(x86)¥Microsoft SDKs¥F#¥4.1¥Framework¥v4.0¥fsi.exe" - ロード: "%1"%* – Gordon

関連する問題