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

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


当前回答

对我来说,解决方案隐藏在项目属性的高级构建设置中:

由于未知的原因,它被设置为none:将其设置为full会导致命中断点。

要进入此对话框,请打开项目属性,然后转到构建,然后选择高级…按钮在页面底部。

其他回答

在我的例子中,我被分配了大约120kb的base64值给静态类中的静态约束字符串字段。之后出现了这个问题。我尝试了很多解决方案,但问题没有解决,直到我把这个沉重的任务。

我的环境: MS VS Community 2017 版本15.9.16

我通过首先删除有问题的文件来解决这个问题。

编译。

出于某种原因,程序还是会运行。它不应该编译。它有错误之类的,但还是能运行。

我读了有问题的文件。再次运行。不知怎的,它自己固定了。

因为构建版本更改了(很可能您修改了源代码),所以重新编译解决方案并再次运行应用程序,之后它将到达调试断点。

在我的案例中,是项目/属性/构建选项卡中的错误设置

我有一个主项目引用项目xxx.dll 引用dll中的断点未被命中。

对dll的引用被设置为库文件夹中的bin\debug\xxx.dll

因此,当我调试主项目时,它会到库的bin\debug文件夹中寻找xxx.dll。

但是,在库的属性中,由于一些黑暗的原因,输出路径被设置为bin\x86\debug而不是bin\debug

因此,库的每次构建都将新的dll放在bin\x86\debug文件夹中,而不是在bin\debug中

所以VS在调试的时候总是找到一个旧的库的dll,因此错误是正确的,有一个不同的源。

所以我修正了从库到bin\debug的输出路径,所以主项目的引用现在会找到正确的版本,现在我的断点再次被击中。

我花了好几个星期才弄明白

在我的案例中,问题在于ASP。在项目属性>>Web下未启用NET调试