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

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


当前回答

检查解决方案中是否有多个具有该名称的文件。

这是我从别人那里接手的一个项目。在Controller.cs中,断点列表充满了行号,有些是活动的,有些不是。我找到了这个问题,并尝试了一些选项,但是当我双击断点时,它们将我带到解决方案中的不同项目。因为文件被称为相同,所以它们看起来是相同的,但实际上不是。答案当然是忽略这个警告,因为如果你要加载另一个文件,它们就会变得活跃。

其他回答

如果您的解决方案中有多个项目,那么请确保将正确的项目设置为StartUp项目。若要将特定项目设置为解决方案的启动项目,请右键单击该项目,选择“设置为启动项目”。

在我正确地设置我的StartUp项目之后,线程到达了所需的断点。

对我有用的是将解决方案平台从x86改为Any CPU。在更改为Any后,我设置了一个停止地址,运行网站,打开页面,点击按钮,它就停止了。我关闭了网站,改回x86并成功地执行了相同的顺序。

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

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

我之前一直在摆弄我的csproj文件。所以在项目属性(VS 2013) > Web选项卡>服务器部分>[下拉],我有“IIS快速”选择当我以前有“本地IIS”选择。一旦我将设置修正为之前的设置,断点就可以工作了。

我也遇到过这种情况。导致我的问题的条件:

我正在本地运行一个完整的IIS7实例 我正在把我的软件分成不同的项目

我打开以前的版本导致了这个问题(VS提示问我是否想在IIS调试中指向这个实例,我回答'是'),然后打开当前版本(再次响应IIS提示'是'),然后尝试在以前的版本中调试。

为了解决这个问题,我只是关闭并重新打开了之前的预期版本,再次将其断言为调试源。