在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。
这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?
在Visual Studio中调试时,有时我添加了一个断点,但它是空心的,VS说“断点目前不会被击中。”源代码与原始版本不同。”显然,这使我无法进行调试。
这条消息到底是什么意思?什么原始版本?如果我只是打开了解决方案,而没有对代码做任何更改,又怎么会有“原始版本”呢?
当前回答
对我来说;我的网站在默认网站(http://localhost/myapp/)下的IIS应用程序中运行,并且IIS应用程序的映射指向的磁盘路径与我正在处理的源代码不同。
解决;重新映射您的IIS应用程序到与您正在构建的源代码相同的路径。
(如果您在磁盘的不同位置运行同一个应用程序的多个版本,就会发生这种情况)
其他回答
对我来说;我的网站在默认网站(http://localhost/myapp/)下的IIS应用程序中运行,并且IIS应用程序的映射指向的磁盘路径与我正在处理的源代码不同。
解决;重新映射您的IIS应用程序到与您正在构建的源代码相同的路径。
(如果您在磁盘的不同位置运行同一个应用程序的多个版本,就会发生这种情况)
有一个几乎察觉不到的设定为我解决了这个问题。 如果有一个特定的源文件没有命中断点,则可以将其列在
解决方案资源管理器 右键单击解决方案 属性 公共属性 调试源文件 "不要找这些源文件"
出于某种我不知道的原因,VS 2013决定在那里放置一个源文件,随后,我无法在该文件中点击断点。这可能是“源代码与原始版本不同”的罪魁祸首。
问题是调试信息与程序集不同步。解决方法很简单:
转到你的bin文件夹 删除.pdb文件 重建
应该能成功!
(奇怪的是,不丢弃.pdb文件的重新构建并不总是有效。我可以看到修改的日期正在更新,但仍然在链的某个地方(VS2013调试器,IIS,程序集缓存)没有检测到此更改)
去
工具 选项 调试 一般
取消选中“要求源文件与原始版本完全匹配”
对我有用的是将解决方案平台从x86改为Any CPU。在更改为Any后,我设置了一个停止地址,运行网站,打开页面,点击按钮,它就停止了。我关闭了网站,改回x86并成功地执行了相同的顺序。