2017-07-28 90 views
2

有没有办法运行我的.fs文件,使用断点或像System.Diagnostics.Debugger.Launch()这样的命令,以便我可以使用FSI来检查值,对其应用函数,绘制它们等等?我可以使用FSI来调试我的代码吗?

我知道这个问题之前已经问过,但我试过了答案,并且无法让它们工作。清楚的说明或链接到解释过程的写作,不仅对我自己而言,而且对于所有初学者来说都是非常有帮助的。

回答

1

不幸的是,你不能达到断点并跳入FSI。正在运行的.NET程序的上下文与交互式FSI会话的上下文完全不同,并且它们不兼容,无法在一个或另一个之间进行切换。我可以从其他动态/解释语言(如JavaScript,Python等)中获得对这种调试的期望。它是一个非常强大的功能。如您已经注意到的那样,您可以使用VS立即窗口,但您需要使用类似C#的语法,并尊重其限制。此外,由于它不是F#,因此您需要了解F#to .NET转换才能充分利用它。

如果您在项目中使用Paket进行依赖关系管理,您可以使用其他选项:将generate_load_scripts: true添加到您的paket.dependencies。这将为您提供一个像.paket\load\net452\main.group.fsx这样的文件,您可以将其加载到FSI中以获取项目的所有依赖关系。但是,您仍然需要负责加载自己的源文件,并建立一些类似于您希望的断点的状态。

+0

谢谢。仅仅为了澄清一下,您建议使用#load和#r命令的Paket方法有哪些优势? – Soldalma

+2

@Soldalma - 如果你的项目中有多个依赖关系,跟踪所有不同的'#r'命令可能会变得很麻烦,如果你添加一个新的依赖关系,你必须手动更新它们如果你有一打脚本,很容易忘记从一打中更新一个脚本)。 Paket生成的脚本将所有'#r'命令放在一起,这样您就可以在每个脚本的顶部运行'#load(path)/ main.group.fsx' - 每次添加一个新的依赖关系,Paket自动为你保留'main.group.fsx'文件。 – rmunn

1

要在Visual Studio或Visual Studio代码中创建一个中断点,只需单击想要设置断点的行号的左侧。这是.fs文件中支持的功能。

+0

我知道如何设置和使用断点。我的问题是关于'FSI'。 – Soldalma

+0

啊,我的歉意。所以你想使用FSharp交互式窗口在你的.FS文件中测试你的代码? – JosephStevens

+0

我想用FSI来调试我的文件。也就是说,设置一个断点,然后使用FSI,而不是使用Locals窗口,Immediate窗口和Watch窗口。 – Soldalma

相关问题