在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。

这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?


当前回答

在我的例子中,我在VS 2012中附加了一个正在运行的进程。当附加时,你可以选择以各种模式(本机、脚本、silverlight、托管2.0、托管4.0等)进行调试。默认情况下,调试器自动选择模式。然而,自动并不总是做出正确的选择。如果进程包含多种类型的代码,请确保调试器使用的是正确的代码。

其他回答

对我来说;我的网站在默认网站(http://localhost/myapp/)下的IIS应用程序中运行,并且IIS应用程序的映射指向的磁盘路径与我正在处理的源代码不同。

解决;重新映射您的IIS应用程序到与您正在构建的源代码相同的路径。

(如果您在磁盘的不同位置运行同一个应用程序的多个版本,就会发生这种情况)

我在将一个项目从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。

我发现当断点在不能被打断的行上时发生错误。我没有显示工具提示,是为了直接显示后面没有错误的行。

你做过这种事吗?

是否继续运行最后一个成功的构建?

如果您勾选了方框并按下“是”,即使您的项目没有编译,您也将成功运行最后一个构建。这意味着无论何时设置断点,都将得到该错误。

试着改变这个值:

工具 选项 项目和解决方案 构建并运行 在运行时,发生构建或部署错误时:不启动

在“解决方案配置”中选择“调试”,而不是“发布”