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

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


当前回答

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

int a=0;

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

其他回答

我在将一个项目从netcoreapp2.0升级到netcoreapp2.2后遇到了这个问题。

我只是通过编辑.csproj文件中的TargetFramework条目来做到这一点,而忽略了对launch.json进行更改。

"program": "${workspaceFolder}/src/MyProject/bin/Debug/netcoreapp2.0/MyProject.dll"

这意味着VS Code总是加载旧的2.0版本的项目。我在删除/bin和/obj中的所有内容后才发现它,然后它根本不会运行,直到我在上面的路径中发现2.0。

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

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

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

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

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

对我来说,解决方案隐藏在项目属性的高级构建设置中:

由于未知的原因,它被设置为none:将其设置为full会导致命中断点。

要进入此对话框,请打开项目属性,然后转到构建,然后选择高级…按钮在页面底部。

也许dll是从GAC加载的。

您可以从gac卸载dll,需要管理员权限。

gacutil -u YourDll