2012-02-17 2 views
11

以前はバッチファイルを使用していた非常に基本的なタスクにF#を使用したいと思います。 fsxファイルをfsi.exeに関連付けて、ダブルクリックするだけで実行できます。これまでのところ素晴らしいです。プロジェクトを設定せずにVisual Studio内からfsxファイルを実行できますか?

しかし、コードを深く掘り下げてデバッグしたいことがあります。私がVisual Studio内でfsxファイルを開くとき、私はそれを実行することができませんし、私もラインを選択し、 "インタラクティブに送信"を使用することはできません。

これらのコマンドは、完全なF#プロジェクトを設定した場合にのみ動作するようです。それは面倒なようです(バッチファイルの置き換えとして)。どのアプローチが正しいのだろうか?私はケーキを食べて食べたい!私は素早く変更することができる単純なファイルが欲しいですが、Visual Studioで必要に応じて分析することもできます。

UPDATE 私はちょうどあなたが「見る\その他のWindows \ F#インタラクティブ」でインタラクティブコンソールを開くことができ、その後、あなたが「インタラクティブに送信」コマンドを持っています考え出しました。

すでに発見されたとして、私はまだ..

+0

いいえ、プロジェクトなしでコードをデバッグすることはできません。 – ildjarn

+0

したがって、F#対話型コンソールを使用した基本的なスクリプト作成作業は、最も効果的なサポートです。 – Christoph

+1

ところで:「対話式に送信」コマンドは、Alt + Enterと関連付ける必要があります(あなたがResharperを無効にしている場合を除きます)。 –

答えて

17

しかし、コードを実行し、ブレークポイントを設定する能力を欠いているよ、あなたはF#インタラクティブコンソールを使用するプロジェクトを作成する必要はありません。

インタラクティブな開発(またはスクリプティング)のためにF#を使用すると、FSIに個別のコマンドを送信するだけでコードを段階的に評価してその動作を分析できるため、デバッグのような機能はあまり重要ではないと考えています。ですから、私はF#Interactiveでのデバッグの必要性を非常に頻繁に感じることはありません。

これは実際にサポートされている機能ではありませんが、F#Interactiveを使用している場合はスクリプトファイルでコードをデバッグできます。このトリックは、F#Interactiveの背後にあるfsi.exeプロセスにデバッガを接続することです。

「デバッグ」 - >「プロセスにアタッチ」に移動し、「fsi.exe」を選択します。その後、fsxスクリプトファイルにブレーキポイントを配置できるようになり、F#Interactiveで実行されているコードが破損します。私が言ったように、これは実際にはサポートされていませんが、一般に関数内のコードではうまくいきます。私はこれをしばしば役に立つとは考えていませんが、今は役に立ちそうです。

+0

ああ、うまくいくはずです。私は、デバッガが接続されるまで、評価を保持するために最初にConsole.ReadLineを配置する必要があると思います。誰かが本当にデバッグする必要がある時には、大丈夫かもしれません。 – Christoph

+0

@Christophデバッガを接続し、ブレークポイントを配置し、* F * Interactiveにコードを送信したり、ブレークポイントをアタッチした後に関数を実行したりすることができます。 'ReadLine'は残念ながらVSのF#コンソールでは動作しません。 –

+0

ああ、最初はFSI.exeプロセスが短命だと思っていましたが、インタラクティブウィンドウが開いたままである限り、それは生きています。一方、このようにfsxファイルをデバッグする場合、デバッガが制限されているように見えます。私はこのように試みたときにブレークポイントの周りのローカル変数の値を調べることができませんでした。何か不足していますか? – Christoph