8

私は単体テストを含む静的ユーティリティメソッドのセットを持っています。しかし、インタラクティブモードですぐにコードを実行できるLispやSmalltalkのように、テスト - >修正 - >コンパイルサイクル(REPL)を使用するよりインタラクティブな方法を望みます。私はVS 2010で開いたC#プロジェクト内からこれらのメソッドを直接テストするためにF#Interactiveを使用しようとしましたが、うまく動作しませんでした。F#Interactiveと対話的にC#関数をテストする方法

アセンブリ(#rディレクティブ)をロードして名前空間を開き、メソッドを呼び出して(結果を調べる)ことができます。しかし、Visual Studio 2010の "F#Interactive"の中でどうすればいいですか?デバッグモードで「即時」ウィンドウを使用することは可能ですが、コードを書くときにF#Interactive内で「デザインモード」で実行したいと思います。

+1

何が問題なのですか?あなたは質問の正解を記入しているようですね? – Brian

+0

ちょっとブライアン! - ああ、いいえ。私は、#rディレクティブがフルパスで任意のdllをロードするのに使うことはできないが、GACのアセンブリまたはサーチパス内のものだけをロードすることが問題だと思う。だから私は何か完全に間違っているとの結論に達しました。オープンプロジェクト内からF#Interactiveを使用する別の方法がなければなりません。私は、イムメイトウィンドウのようによりインタラクティブに、より簡単で、より軽くなければなりません。 – Nico

答えて

10

#Iディレクティブを使用してプロジェクトへのパスを含める必要があります。アセンブリをロードして使用することができます。私はシンプルなC#コンソールアプリケーションを作成してこれを試して、これを動作させました。

F#でその後
using System; 

namespace ConsoleApplication1 
{ 
    public class Program 
    { 
     static void Main(string[] args) 
     { 
      PrintMessage(); 
      Console.Write("Press any key to continue . . . "); 
      Console.ReadKey(true); 
      Console.WriteLine(); 
     } 

     public static void PrintMessage() 
     { 
      Console.WriteLine("MESSAGE!"); 
     } 
    } 
} 

インタラクティブ:

> #I "full path to debug directory";; 

--> Added 'full path to debug directory' to library include path 

> #r "ConsoleApplication1.exe";; 

--> Referenced 'full path to debug directory\ConsoleApplication1.exe' 

> open ConsoleApplication1;; 
> Program.PrintMessage();; 
MESSAGE! 
val it : unit =() 

だから、それは間違いなく動作しますが、あなただけの最初のプロジェクトをコンパイルする必要があります。あらかじめアセンブリを解放するためにセッションをリセットすることを覚えておいてください。

+1

こんにちはJeff!私はあなたの解決策をできるだけ早くチェックします。最後に誰かが手掛かりを持っていました...悲しいかな、VS2010チームの誰もREPLでF#をコーディングしたいと思っていませんでした。(+1) – Nico

+1

フルパスに@を接頭してバックスラッシュを処理しませんエスケープ文字として、例えば"#I @" c:\ users \ myself \ projects \ FizzBu​​zz \ bin \ x86 \ Debug \ ";;' –

関連する問題