4

我会解释的。

我使用 Omnisharp 的 C# 扩展安装了 VSCode,我正在尝试调试控制台应用程序(使用 Microsoft.NETCore.App 编译为 dll)。

所以,当我启动应用程序(F5)时,调试器无法附加到它,我想这是因为在我的launch.json文件中我有这个:

{
    "name": ".NET Core Launch (console)",
    "type": "coreclr",
    "request": "launch",
    "preLaunchTask": "build",
    "program": "dotnet.exe",
    "args": ["run"],
    "cwd": "${workspaceRoot}",
    "stopAtEntry": true
}

在这种情况下,我的理解是 dotnet.exe 托管要执行的 dll。因此,为了开始调试,我必须在附加模式下再次运行 VSCode,并给出进程名称才能工作:

{
    "name": ".NET Core Attach",
    "type": "coreclr",
    "request": "attach",
    "processName": "dotnet"
}

我在这里尝试完成的是编写一个扩展,它将使用omnisharp的调试适配器执行并附加到进程。这相当于“启动”+“.NET Core Attach”(一次调用,无需停止 VSCode 以挂接到目标进程)。

到目前为止,扩展(打字稿)正在这样做:

vscode.commands.executeCommand("workbench.action.debug.start").then((s)=>{               
           vscode.window.showInformationMessage("Trying to attach...");
           //attach to dotnet.exe process
        },(err)=>{                
           vscode.window.showErrorMessage(err); 
        });   

我在那里缺少对流程部分的附加:/那么,除了启动一个流程之外,有没有办法进行扩展,还附加到它?

谢谢。

4

0 回答 0