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

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


当前回答

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

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

其他回答

有时您只需要将解决方案配置从“发布”更改为“调试”。

我刚刚重启电脑,它为我工作得很好。

我的问题有点愚蠢。我有两份我的项目副本,我在visual studio中混合文件。

假设你有projectX和projectY。这些项目都包含myFile.cs。我打开projectX并编辑myFile.cs。但是这个myfile。cs属于project。(可以在visual studio中打开来自不同项目的文件)所以在这种情况下,警告说源代码将不同于原始。

我在一个分层架构项目的几个项目中遇到了同样的问题,问题是在配置中,所选项目的构建复选框没有被选中。所以这个问题在一个项目中得到了解决。

对于另一层,即使在配置中启用了构建,它也会带来同样的麻烦。我做了所有其他的选择,比如重新开始清理项目,但没有一个有用。最后,我取消了该特定项目的build复选框,并进行了清理和重建。他们再次标记了复选框,并照做了 相同的。然后问题就解决了。

希望这能有所帮助。

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