使用Mono Debug扩展在VSCode中调试F#控制台应用程序时,断点不会发生

vrn*_*mar 7 mono f# visual-studio-code

我创建了一个测试控制台应用程序,并尝试使用VSCode和Mono Debug扩展来调试它.

fsharp代码:

module TestFharp

[<EntryPoint>]
let main argv =
    printfn "Args %A" argv
    let x = 5
    printf "hello world"
    0 
Run Code Online (Sandbox Code Playgroud)

launch.json:

{
    "version": "0.2.0",
    "configurations": [

        {
            "name": "Launch",
            "type": "mono",
            "request": "launch",
            "program": "C:/FSharp/test/TestFharp/bin/Debug/TestFharp.exe",
            "args": [],
            "cwd": "${workspaceRoot}",
            "preLaunchTask": "",
            "runtimeExecutable": null,
            "env": {},
            "externalConsole": false,
            "stopOnEntry": true
        },
        {
            "name": "Attach",
            "type": "mono",
            "request": "attach",
            "address": "localhost",
            "port": 55555
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

DEBUG CONSOLE窗口的输出

mono --debug --debugger-agent=transport=dt_socket,server=y,address=127.0.0.1:61724 C:/FSharp/test/TestFharp/bin/Debug/TestFharp.exe 
Args [||]
hello world
Run Code Online (Sandbox Code Playgroud)
  • 我是否需要进行任何其他设置才能达到断点?
  • build文件在build文件夹和\ projectFolder\bin\Debug之间有什么区别?

Krz*_*lak 0

build 文件夹中的 exe 文件和 \projectFolder\bin\Debug 有什么区别

exe目录中的文件build由 FAKE 的构建脚本(文件)创建build.fsx[在 Ionide 中使用Ctrl + F5/FAKE: Build default命令调用]

exein\projectFolder\bin\Debug是标准 MsBuild 输出。在 Ionide 中,您可以使用命令直接调用 MsBuild MsBuild: Build project

两个exe文件是相同的(FAKE 在底层使用 MsBuild),这只是偏好问题以及您是否想在构建上运行一些额外的操作(如测试) - FAKE 允许您定义更复杂的构建过程,MsBuild 只是编译应用程序。

根据您用来构建应用程序的方法,您需要指向exerightlaunch.json

我也设置externalConsoletrue.

否则,看起来不错,F5应该启动您的应用程序和调试器。