教程所用工具版本为 Visual Studio 2022,其他版本原理与该文档一致。
附加到进程
Visual Studio -> 调试 -> 附加到进程
选择 dotnet 这个进程,点击附加。
第一次附加会加载环境,国内的服务器下载可能很慢。这个时候可以直接使用任务管理器关闭vs。
重复上面的步骤,”附加到进程“弹框里“可用进程”可以看到 wget 下载环境配置的进程,从这里可以拿到下载链接。
获取到 wget 进程的Id,进入容器中,杀死进程,防止本地上传之后文件被覆盖。
kill ID
本地下载环境配置
先将安装环境的脚本从容器中拷贝出来,文件在容器内的路径是 /root/.vs-debugger/GetVsDbg.sh
docker cp app:/root/.vs-debugger/GetVsDbg.sh .
找到下载附件的位置
download() {
if [ "__UseZip" = false ]; then
vsdbgFileExtension=".tar.gz"
else
echo "Warning: Version '{__VsDbgMetaVersion}' is only avaliable in zip."
vsdbgFileExtension=".zip"
fi
vsdbgCompressedFile="vsdbg-{__RuntimeID}{vsdbgFileExtension}"
target="(echo "{__VsDbgVersion}" | tr '.' '-')"
url="https://vsdebugger.azureedge.net/vsdbg-{target}/{vsdbgCompressedFile}"
check_internet_connection "url"
echo "Downloading{url}"
if hash wget 2>/dev/null; then
wget -q "url" -O "vsdbgCompressedFile"
elif hash curl 2>/dev/null; then
curl -s "url" -o "vsdbgCompressedFile"
fi
if [ ? -ne 0 ]; then
echo
echo "ERROR: Could not download{url}"
exit 1
fi
__VsdbgCompressedFile=$vsdbgCompressedFile
}
可以看到 下载的路径为 https://vsdebugger.azureedge.net/vsdbg-{target}/{vsdbgCompressedFile}
这里面有两个变量
target
从上面的语句
target="(echo "{__VsDbgVersion}" | tr '.' '-')"
可以看到target
就是将__VsDbgVersion
变量的”.“转成"-",set_vsdbg_version()
方法里面可以看到 Vs2022的对应的版本号为:17.6.10401.3
,那么target的值为17_6_10401_3
vsdbgCompressedFile
vsdbgCompressedFile="vsdbg-{__RuntimeID}{vsdbgFileExtension}"
计算后,其中__RuntimeID的值为: linux-x64,vsdbgFileExtension 的值为 .tar.gz
完整的下载链接为:https://vsdebugger.azureedge.net/vsdbg-17-6-10401-3/vsdbg-linux-x64.tar.gz
修改上面的download()
方法
download() {
if [ "__UseZip" = false ]; then
vsdbgFileExtension=".tar.gz"
else
echo "Warning: Version '{__VsDbgMetaVersion}' is only avaliable in zip."
vsdbgFileExtension=".zip"
fi
vsdbgCompressedFile="vsdbg-{__RuntimeID}{vsdbgFileExtension}"
target="(echo "{__VsDbgVersion}" | tr '.' '-')"
# url="https://vsdebugger.azureedge.net/vsdbg-{target}/{vsdbgCompressedFile}"
# check_internet_connection "url"
# echo "Downloading{url}"
# if hash wget 2>/dev/null; then
# wget -q "url" -O "vsdbgCompressedFile"
# elif hash curl 2>/dev/null; then
# curl -s "url" -o "vsdbgCompressedFile"
# fi
# if [ ? -ne 0 ]; then
# echo
# echo "ERROR: Could not download{url}"
# exit 1;
# fi
__VsdbgCompressedFile=$vsdbgCompressedFile
}
注释下载的部分,覆盖容器内的配置文件。
在容器内创建目录 /root/.vs-debugger/vs2022
,将下载好的文件拷贝到该目录
执行命令配置环境
然后执行
/bin/sh /root/.vs-debugger/GetVsDbg.sh -v vs2022 -l /root/.vs-debugger/vs2022 -a /remote_debugger
即可配置完成。
相同配置的其他容器,可以创建相同的目录,并将文件放到同样的位置,直接执行上面的脚本安装。