- Docker
- .NET Core 1.1
- Visual Studio 2017
- .NET Core调试器(clrdbg)
我收到以下错误:
"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."
我将逐步构建.NET Core Docker映像并从该映像运行一个Container实例,然后将其与Visual Studio 2017远程连接,我的Dockerfile.debug在我的问题底部:
I will got step by step how I build my .NET Core Docker image and run a Container instance from this image, and then connect remote with Visual Studio 2017, my Dockerfile.debug is at the bottom of my question:
好吧,现在容器已准备好在Visual Studio 2017的机器上使用ssh和Visual Studio 2017进行远程调试:
Ok great, now that container is ready for remoting debugging, using ssh with Visual Studio 2017, on my machine with Visual Studio 2017:
中提琴!我们有我的问题:
And viola! We have my issue:
如果我们在Docker容器中查看/app,我们会看到pdbs:
If we look at /app in my Docker Container we can see pdbs:
并且源代码是相同的,正如我的工作流说明中的git pull步骤所演示的.
And the source code is the same, as the git pull steps in my workflow explanation demonstrates.
不确定从这里要去哪里...
Not sure where to go from here...
这是我的Dockerfile.debug:
Here is my Dockerfile.debug:
# Use the standard Microsoft ASP.NET Core container FROM microsoft/aspnetcore # File Author / Maintainer MAINTAINER Brian Ogden WORKDIR / RUN apt-get update && apt-get install -y unzip RUN apt-get install -y openssh-server RUN mkdir /var/run/sshd RUN echo 'root:password' | chpasswd RUN sed -i 's/PermitRootLogin without-password/PermitRootLogin yes/' /etc/ssh/sshd_config RUN sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd ENV NOTVISIBLE "in users profile" RUN echo "export VISIBLE=now" >> /etc/profile #install CLRDBG, Microsoft's new cross-platform command line debugger used for debugging code running on .NET Core RUN curl -sSL aka.ms/getclrdbgsh | bash /dev/stdin vs2015u2 ~/clrdbg # Copy our code from the "/src/MyWebApi/bin/Debug/netcoreapp1.1/publish" folder to the "/app" folder in our container WORKDIR /app COPY ./src/TSL.Security.Service/bin/Debug/netcoreapp1.1/publish . # Expose port 80 for the Web API traffic ENV ASPNETCORE_URLS +:5000 EXPOSE 5000 22 ENTRYPOINT ["dotnet", "TSL.Security.Service.dll"]推荐答案
Tools->Options->Debugging->General,关闭要求源文件与原始版本完全匹配".这并不理想,但至少会达到VS2017中源代码中设置的断点.
Tools->Options->Debugging->General, turn off "Require source files to exactly match the original version". Not ideal, but at least it hits the breakpoint set in the source code in VS2017.
一旦您找到正确解决此问题的方法,请告诉我.
Please let me know once you find out how to properly fix this.
更多推荐
远程调试.NET Core Linux Docker容器
发布评论