在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。
这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?
在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。
这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?
当前回答
我在使用本地IIS而不是IIS express时遇到了这个问题。IIS中的文件源确实与Visual Studio中的文件源相匹配,但是,我不得不在IIS中回收应用程序池,以便让它使用新构建的dll。
其他回答
我在将一个项目从netcoreapp2.0升级到netcoreapp2.2后遇到了这个问题。
我只是通过编辑.csproj文件中的TargetFramework条目来做到这一点,而忽略了对launch.json进行更改。
"program": "${workspaceFolder}/src/MyProject/bin/Debug/netcoreapp2.0/MyProject.dll"
这意味着VS Code总是加载旧的2.0版本的项目。我在删除/bin和/obj中的所有内容后才发现它,然后它根本不会运行,直到我在上面的路径中发现2.0。
对于VS Code用户:
如果在尝试调试ASP . net Core应用程序时遇到此问题,请确保在tasks中定义构建任务。json,并且您可以在调试控制台窗格中看到其输出,则成功运行。
在启动中定义的调试配置。引用此任务的Json将出于某种原因(至少在某些情况下)继续执行定义的二进制文件,即使构建任务失败,并且由于构建任务失败,该二进制文件将成为最后一个成功构建的程序集。
因为构建版本更改了(很可能您修改了源代码),所以重新编译解决方案并再次运行应用程序,之后它将到达调试断点。
我通过首先删除有问题的文件来解决这个问题。
编译。
出于某种原因,程序还是会运行。它不应该编译。它有错误之类的,但还是能运行。
我读了有问题的文件。再次运行。不知怎的,它自己固定了。
有时您只需要将解决方案配置从“发布”更改为“调试”。