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

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


当前回答

在某些情况下,重新编译和重新构建并不能帮助克服这个问题。 另一个潜在的解决方案是从解决方案资源管理器中删除带断点的源文件,然后重新添加它(例如通过从文件夹中拖放)。

其他回答

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

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

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

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

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

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

从Visual Studio 2017 15.3.1到15.3.5,出现了解决此问题的新方法。如果您正在使用EditorConfig,则charset=utf8选项会导致这些症状。VS团队已经复制了这个,并表示他们正在努力。

因此,一个修复方法是注释掉.editorconfig文件中的charset=utf8行。

编辑:这应该在VS 15.5被修复。

在我的例子中,我被分配了大约120kb的base64值给静态类中的静态约束字符串字段。之后出现了这个问题。我尝试了很多解决方案,但问题没有解决,直到我把这个沉重的任务。

我的环境: MS VS Community 2017 版本15.9.16

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

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