Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用F#Interactive交互测试C#函数_C#_Visual Studio 2010_F#_Read Eval Print Loop_F# Interactive - Fatal编程技术网

如何使用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”中做到这一点?我知道在调试模式下使用“立即

我有一套静态实用程序方法,包括单元测试。但我希望有一种更具交互性的方式来使用测试->修复->编译周期(REPL),就像在Lisp或Smalltalk中一样,在这种方式下,可以在交互模式下立即执行代码。在VS2010中,我尝试使用F#Interactive直接从开放的C#项目中测试这些方法,但没有成功


我知道我必须加载程序集(
#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\”