如何使用F#Interactive交互测试C#函数
我有一套静态实用程序方法,包括单元测试。但我希望有一种更具交互性的方式来使用测试->修复->编译周期(REPL),就像在Lisp或Smalltalk中一样,在这种方式下,可以在交互模式下立即执行代码。在VS2010中,我尝试使用F#Interactive直接从开放的C#项目中测试这些方法,但没有成功如何使用F#Interactive交互测试C#函数,c#,visual-studio-2010,f#,read-eval-print-loop,f#-interactive,C#,Visual Studio 2010,F#,Read Eval Print Loop,F# Interactive,我有一套静态实用程序方法,包括单元测试。但我希望有一种更具交互性的方式来使用测试->修复->编译周期(REPL),就像在Lisp或Smalltalk中一样,在这种方式下,可以在交互模式下立即执行代码。在VS2010中,我尝试使用F#Interactive直接从开放的C#项目中测试这些方法,但没有成功 我知道我必须加载程序集(#r指令),打开名称空间,然后才能调用方法(并检查结果)。但我如何在VisualStudio2010的“F#Interactive”中做到这一点?我知道在调试模式下使用“立即
我知道我必须加载程序集(
#r
指令),打开名称空间,然后才能调用方法(并检查结果)。但我如何在VisualStudio2010的“F#Interactive”中做到这一点?我知道在调试模式下使用“立即”窗口是可能的,但我想在编写代码时在“设计模式”下的F#Interactive中这样做。您需要使用\I
指令包含项目的路径,然后您可以加载程序集并使用它。我写了一个简单的C#控制台应用程序,试试这个,让它工作起来
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!");
}
}
}
然后在F#interactive中:
> #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 = ()
所以它肯定是有效的,你只需要先编译你的项目。请记住先重置会话以释放程序集。什么不起作用?听起来你在拼写问题的正确答案?嘿,布莱恩唉,不是。我想问题在于#r指令不能用于加载具有完整路径的任意DLL,而只能加载GAC的程序集或搜索路径中的程序集。所以我得出的结论是,我在做一些完全错误的事情,必须有另一种方式在开放的项目中使用F#Interactive。我应该更容易,更瘦。。。在即时窗口中更具互动性。嗨,杰夫!我会尽快检查你的解决方案。终于有人找到了线索。。。唉,VS2010团队中没有人想用F#来推动REPL编码,这将是非常有价值的。。。(+1)在完整路径前面加上@前缀,因此反斜杠不会被视为转义字符,例如
#I@“c:\users\imf\projects\FizzBuzz\bin\x86\Debug\”代码>