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

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


当前回答

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

其他回答

正如它所说,“源代码与原始版本不同”。

右键单击解决方案资源管理器中的项目文件夹,并选择Clean。构建项目的新版本,断点将再次工作!

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

当调试期间或调试会话之间的系统时间发生变化时,可能会发生这种情况,无论是通过编程方式、手动方式还是通过外部程序。

注意vs中的“Output”窗口,它会告诉你加载了哪些程序集以及何时加载。您可能会看到正在加载文件夹中某个位置的程序集的旧版本。

例如,如果您有多个程序集,并且当前正在尝试插入其中一个支持程序集,CLR将处理程序集解析,这可能会加载您在项目中引用的程序集文件以外的另一个程序集文件。

以我为例,我正在开发一个Windows CE应用程序,该应用程序在模拟器上进行测试。问题是可执行文件没有部署到模拟器中,因此.pdb(在开发环境中)与.exe(在模拟器中)不同步,因为新的.exe从未复制到模拟器中。我必须删除模拟器中的.exe,以强制进行新的部署。然后就成功了。