Kev*_*ewa 4 c# visual-studio-debugging docker visual-studio-2019
我正在尝试调试从 Visual Studio 2019(版本 16.11.10)运行 C#/.NET 6.0 控制台应用程序的 Linux 容器。
当我使用“调试/附加到进程...”连接到正在运行的容器并附加到我的进程时,出现错误:
无法启动调试适配器。输出窗口中可能会提供其他信息。
无法在“/home/dockeruser/.vs-debugger”找到调试器脚本
出于公司安全目的,我以用户dockeruser身份运行容器工作负载,但当我将 Dockerfile 调整为以用户 root 身份运行时,我可以重现此情况。错误信息变为
无法在“/root/.vs-debugger”找到调试器脚本
输出显示
Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
Initialization log:
Determining user folder on remote system...
Checking for existing installation of debugging tools...
Downloading debugger launcher...
Creating debugger installation folder: /home/dockeruser/.vs-debugger
Copying debugger launcher to /home/dockeruser/.vs-debugger/GetVsDbg.sh
Failed: Failed to copy files.
Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
Failed: Unable to find debugger script at '/home/dockeruser/.vs-debugger'.
The program '[1] dotnet' has exited with code -1 (0xffffffff).
Run Code Online (Sandbox Code Playgroud)
我可以通过docker exec在我的容器上执行 bash 会话并运行 GetDbgVs.sh 来解决这个问题,如/sf/answers/4826547211/中详述,但这样做很痛苦 - 感觉就像是配置错误。
我已经验证我的 Windows 身份是 Windows docker-users组的成员。
虽然这不是我想要的答案,但当我想使用 VS2019 调试附加时,一旦我知道我的<CONTAINER_NAME> ,我就有了一个 1-liner shell 解决方法,可以在我的容器上执行。这可能对其他有此问题的人有用。
docker exec -u root <CONTAINER_NAME> sh -c "apt-get update && apt-get install wget -y"; docker exec <CONTAINER_NAME> sh -c "mkdir -p ~/.vs-debugger; wget https://aka.ms/getvsdbgsh -O ~/.vs-debugger/GetVsDbg.sh; chmod a+x ~/.vs-debugger/GetVsDbg.sh"