在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。
这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?
在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。
这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?
当前回答
This happen often also if you are using a file references to binaries (instead of project references to code in your project), and the compiled binary that you are referencing falls out of sync with the corresponding source code on your machine. This can happen because you downloaded a new version of the binary from source control without the new source code that went with it, or you have a few versions of the binary on your machine and are referencing an old copy, etc. If this is indeed the problem, it's a good reason to use project references as much as it practical.
其他回答
在“解决方案配置”中选择“调试”,而不是“发布”
我也遇到过这种情况。导致我的问题的条件:
我正在本地运行一个完整的IIS7实例 我正在把我的软件分成不同的项目
我打开以前的版本导致了这个问题(VS提示问我是否想在IIS调试中指向这个实例,我回答'是'),然后打开当前版本(再次响应IIS提示'是'),然后尝试在以前的版本中调试。
为了解决这个问题,我只是关闭并重新打开了之前的预期版本,再次将其断言为调试源。
在我的案例中,问题在于ASP。在项目属性>>Web下未启用NET调试
以我为例,我正在开发一个Windows CE应用程序,该应用程序在模拟器上进行测试。问题是可执行文件没有部署到模拟器中,因此.pdb(在开发环境中)与.exe(在模拟器中)不同步,因为新的.exe从未复制到模拟器中。我必须删除模拟器中的.exe,以强制进行新的部署。然后就成功了。
尝试在运行调试模式时禁用和重新设置断点,而不是在启动调试模式之前禁用和重新设置断点。