有沒有辦法運行我的.fs文件,使用斷點或像System.Diagnostics.Debugger.Launch()
這樣的命令,以便我可以使用FSI
來檢查值,對其應用函數,繪製它們等等?我可以使用FSI來調試我的代碼嗎?
我知道這個問題之前已經問過,但我試過了答案,並且無法讓它們工作。清楚的說明或鏈接到解釋過程的寫作,不僅對我自己而言,而且對於所有初學者來說都是非常有幫助的。
有沒有辦法運行我的.fs文件,使用斷點或像System.Diagnostics.Debugger.Launch()
這樣的命令,以便我可以使用FSI
來檢查值,對其應用函數,繪製它們等等?我可以使用FSI來調試我的代碼嗎?
我知道這個問題之前已經問過,但我試過了答案,並且無法讓它們工作。清楚的說明或鏈接到解釋過程的寫作,不僅對我自己而言,而且對於所有初學者來說都是非常有幫助的。
不幸的是,你不能達到斷點並跳入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中以獲取項目的所有依賴關係。但是,您仍然需要負責加載自己的源文件,並建立一些類似於您希望的斷點的狀態。
要在Visual Studio或Visual Studio代碼中創建一箇中斷點,只需單擊想要設置斷點的行號的左側。這是.fs文件中支持的功能。
我知道如何設置和使用斷點。我的問題是關於'FSI'。 – Soldalma
啊,我的歉意。所以你想使用FSharp交互式窗口在你的.FS文件中測試你的代碼? – JosephStevens
我想用FSI來調試我的文件。也就是說,設置一個斷點,然後使用FSI,而不是使用Locals窗口,Immediate窗口和Watch窗口。 – Soldalma
謝謝。僅僅爲了澄清一下,您建議使用#load和#r命令的Paket方法有哪些優勢? – Soldalma
@Soldalma - 如果你的項目中有多個依賴關係,跟蹤所有不同的'#r'命令可能會變得很麻煩,如果你添加一個新的依賴關係,你必須手動更新它們如果你有一打腳本,很容易忘記從一打中更新一個腳本)。 Paket生成的腳本將所有'#r'命令放在一起,這樣您就可以在每個腳本的頂部運行'#load(path)/ main.group.fsx' - 每次添加一個新的依賴關係,Paket自動爲你保留'main.group.fsx'文件。 – rmunn