我收到以下错误:
"The breakpoint will not currently be hit. A copy of TokenController.cs was found in TSL.Security.Service.dll, but the current source code is different from the version built into the TSL.Security.Service.dll."
Run Code Online (Sandbox Code Playgroud)
我将逐步了解如何构建我的.NET Core Docker镜像并从此图像运行Container实例,然后使用Visual Studio 2017连接远程,我的Dockerfile.debug位于我的问题的底部:
cd ~/repos/api.security//一个git存储库git pull //从git for .NET Core项目中提取最新代码dotnet restoredotnet publish //没有其他args与.pdbs一起发布docker build -t tsl.api.security.image.debug -f Docker.debug .docker run -d -p 8080:5000 -p 10222:22 --name=tsl.api.security.container.debug -t tsl.api.security.image.debug //在端口5000上的Container中运行并映射我的.NET Core Webapi到主机端口8080并将容器(端口22)中的ssh映射到主机上的端口10222 …我有自己的手写Dockerfile/docker-compose文件.我从命令行启动容器.现在我想将VS2017(不是VSCode)连接到Docker(基于Linux)容器中的应用程序.它似乎应该是相当容易的任务,但我找不到任何有关如何执行此操作的信息.
我仔细阅读了指南https://github.com/Microsoft/MIEngine/wiki/Offroad-Debugging-of-.NET-Core-on-Linux---OSX-from-Visual-Studio.起初它看起来像我需要的 - 关于如何远程调试在Linux中运行的netcore应用程序的描述.但它只讲述了故事的一部分 - 如何通过SSH进行调试.刚刚提到Docker,但没有说明如何远程调试Docker中的应用程序.
我想这里应该没有太多具体的Docker,它只是在Docker中运行vsdbg并附加在这里.但显然这是一个非常常见的开发用例,并且奇怪的是没有关于此的好消息.
当然,还有VS Tools for Docker,我们可以轻松地在Docker容器中调试应用程序.但对我来说VS Tools for Docker非常糟糕.是的,他们一开始就无缝工作.但绝对不清楚幕后发生了什么.
看起来我们只是可以查看Docker的VSTools并尝试重现它.但这不是很明显.它为docker-compose(docker-compose.vs.debug.g.yml)添加了一个额外的"debug"yaml文件,它应该可以进行调试.我把那个yaml添加到我手写的docker-compose,运行Dockers但是如何附加VS?我获得了我的容器的IP,试图在该IP上找到一个远程调试器,并且4022 VS看不到任何东西.此外,由Tools for Docker创建的debug.yaml对于暴露4022端口没有任何意义,这是可疑的.
PS在Windows容器上找到了一个很好的指南 - https://github.com/riskfirst/debugging-aspnet-core-windows-docker