You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调试ASP.NET Core Docker容器时VS Code无法显示代码的问题排查

问题定位与解决

你的问题根源是launch.json中的sourceFileMap配置错误,和卷映射无关。

原因分析

断点能触发,说明调试器已经成功附加到容器内的.NET进程,且卷映射(./src:/app/)是正常工作的——本地代码已经挂载到容器的/app/目录,进程能读取到代码并运行。但VS Code无法加载对应本地代码,是因为你在sourceFileMap里把容器内的/work路径映射到本地${workspaceRoot}/src/,但实际上容器里的代码路径是/app/,两者不匹配,导致调试器找不到本地代码文件的对应位置。

修复步骤

修改launch.json中的sourceFileMap配置,把容器内的路径改为/app:

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": ".NET Core Docker Attach",
            "type": "coreclr",
            "request": "attach",
            "processId": "${command:pickRemoteProcess}",
            "pipeTransport": {
                "pipeProgram": "docker",
                "pipeArgs": [ "exec", "-i", "csharp" ],
                "debuggerPath": "/root/vsdbg/vsdbg",
                "pipeCwd": "${workspaceRoot}",
                "quoteArgs": false
            },
            "sourceFileMap": {
                "/app": "${workspaceRoot}/src/"
            }
        }
    ]
}

额外优化建议

  • 你的Dockerfile里执行了dotnet publish生成Release包,但最后用dotnet run直接运行源码,调试场景下可以去掉dotnet publish步骤,减少镜像构建时间;
  • 确保本地代码和容器内挂载的代码完全一致,避免因为代码版本不一致导致断点位置偏移。

内容的提问来源于stack exchange,提问作者Sachin Maharjan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.02 19:15:28