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

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


当前回答

至:

Tools > Options > Debugging > General > unchecked "要求源 文件与原始版本完全匹配”

其他回答

如果您正在使用激活器,而设置断点的程序集尚未加载,则可以获得此消息。

一旦激活器加载程序集(假设程序集和调试符号是最新的),断点将被解析。查看调试菜单中的模块窗口是一个好地方。在那里您应该寻找您的文件所属的程序集。首先检查程序集是否加载。那么,从哪里装载的呢?然后,是符号文件加载。同样,符号文件从哪里加载?最后检查两者的版本。

对我来说,没有一个项目能解决这个问题。我只是在函数中添加了一行新代码,类似于:

int a=0;

通过添加这个,我想我触发了visual studio在原始版本中添加这个功能

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

我在vs2017的32位版本中遇到过这种情况。

没有一个解决方案对我有效。我重新启动,我清除IDE文件,清洁构建的解决方案,从git回购和重建解决方案无效。

我从nuget中提取了一个64位依赖项,一旦我使用了程序集,源就不再被构建到最终的可执行文件中,而是构建了IDE缓存的源。

我删除了nuget配置,删除了引用的程序集,下载了源代码,手动构建log4net,对其进行了签名,将其添加到我的项目中的一个文件夹中,并对其添加了引用,然后我就可以再次进行调试了。

这是一个痛苦,我希望它能出现在答案列表中,让所有人都看到。

编辑:在构建过程中没有错误,尽管在IDE设置中打开了“构建错误提示”选项。

有意地中断构建,这意味着在项目中添加一些调试时不同步的任意文本。尝试调试并接收异常。现在修复异常并调试项目。