Debugging 我可以使用FSI调试我的代码吗?

Debugging 我可以使用FSI调试我的代码吗?,debugging,f#,fsi,Debugging,F#,Fsi,有没有一种方法可以使用断点或命令运行我的.fs文件,比如System.Diagnostics.Debugger.Launch(),这样我就可以使用FSI检查值、对值应用函数、打印值等 我知道以前有人问过这个问题,但我尝试了答案,却无法让它们起作用。清晰的说明或一个解释该过程的文章链接不仅对我有很大帮助,而且我相信对所有初学者都有很大帮助。要在visual studio或visual studio代码中找到断点,只需单击要设置断点的行号左侧。这是.fs文件中非常受支持的功能。不幸的是,您无法命中断

有没有一种方法可以使用断点或命令运行我的.fs文件,比如
System.Diagnostics.Debugger.Launch()
,这样我就可以使用
FSI
检查值、对值应用函数、打印值等


我知道以前有人问过这个问题,但我尝试了答案,却无法让它们起作用。清晰的说明或一个解释该过程的文章链接不仅对我有很大帮助,而且我相信对所有初学者都有很大帮助。

要在visual studio或visual studio代码中找到断点,只需单击要设置断点的行号左侧。这是.fs文件中非常受支持的功能。

不幸的是,您无法命中断点并跳转到FSI。运行中的.NET程序的上下文与交互式FSI会话的上下文大不相同,它们的兼容性不足以在其中一个会话之间切换。当来自其他动态/解释语言(如JavaScript、Python等)时,我可以理解这种调试的期望。这是一个非常强大的功能

正如您已经注意到的,您可以使用VS immediate窗口,但您需要使用其类似C的语法并尊重其限制。另外,因为它不是F#,所以您需要了解F#到.NET的转换,以便充分利用它


如果您在项目中使用Paket进行依赖关系管理,那么您还有另一个选项:将
生成\u加载\u脚本:true
添加到
Paket.dependentials
。这将为您提供一个类似于
.paket\load\net452\main.group.fsx的文件,您可以将其加载到FSI中,以获取项目的所有依赖项。但是,您仍然要负责加载自己的源文件,并建立与所需断点类似的状态。

我知道如何设置和使用断点。我的问题是关于FSI的。啊,我道歉。那么您想使用FSharp交互式窗口来测试.FS文件中的代码吗?我想使用FSI来调试我的文件。也就是说,设置一个断点,然后我不想使用本地窗口、即时窗口和监视窗口,而是想使用FSI。很抱歉,但我认为Fsharp Interactive不是这样工作的。FSI窗口用于一次运行几行代码,这样您就可以在不需要断点的情况下浏览代码。谢谢。只是想澄清一下,您建议的Paket方法是否比使用#load和#r命令有优势?@Soldalma-如果您的项目中有多个依赖项,跟踪所有不同的
#r
命令可能会开始成为一件麻烦事,然后如果添加新的依赖项,您必须手动更新所有这些命令(如果你有十几个脚本,很容易忘记更新十几个脚本中的一个)。Paket生成的脚本将所有
\r
命令放在一个地方,这样你就可以运行
\load(path)/main.group.fsx
位于每个脚本的顶部,并且每次添加新的依赖项时,Paket都会自动为您更新
main.group.fsx
文件。