在Visual Studio中进行调试时,有时会添加一个断点,但它是空心的,VS会说“该断点当前不会被击中。源代码与原始版本不同。” 显然,这使我无法进行调试。
该消息到底意味着什么?什么原始版本?如果我刚刚打开解决方案并且未对代码进行任何更改,那么怎么会有“原始版本”?
在Visual Studio中进行调试时,有时会添加一个断点,但它是空心的,VS会说“该断点当前不会被击中。源代码与原始版本不同。” 显然,这使我无法进行调试。
该消息到底意味着什么?什么原始版本?如果我刚刚打开解决方案并且未对代码进行任何更改,那么怎么会有“原始版本”?
Answers:
如其所言,“源代码与原始版本不同”。
右键单击解决方案资源管理器中的项目文件夹,然后选择Clean
。生成该项目的新版本,该断点将再次起作用!
如果您在Debug构建配置中未选中DLL项目,则将永远不会构建新代码!
转至Build --> Configuration Manager ...
(在VS2010中)并检查是否已检查包含您要调试的代码的项目的当前构建配置。
Any CPU
选项,然后它再次起作用。
对我来说,当时是在进行WebSite项目。清理完这些临时文件夹后,我得到了正确的编译器错误:
C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary
ASP.NET Files
C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET
Files
当我发现我故意将一个类文件移入一个子文件夹,并以某种方式重新出现在根文件夹中时,我终于解决了该问题。VS在编辑另一个时正在使用那个。
%localappdata%
在搜索框中输入内容将带您直接进入C:\Documents and Settings\%username%\AppData\Local
你曾经做过吗?
如果您勾选了该框并按“是”,即使您的项目没有编译,您也将获得上一次成功运行的构建。这意味着,无论何时设置断点,都会出现该错误。
尝试更改此值:
去
取消选中“ 要求源文件与原始版本完全匹配”
在解决方案配置中选择调试,而不是发布
关闭Visual Studio并重新打开解决方案可以解决此问题,即,这是IDE本身(我正在运行VS2010)内的错误。
如果您有多个Visual Studio实例在运行,则只需关闭正在运行有问题的解决方案的实例。
从Visual Studio 2017 15.3.1到15.3.5,已经出现了解决此问题的新方法。如果您使用EditorConfig,则该charset=utf8
选项会导致这些症状。VS团队复制了此内容,并表示他们正在研究。
因此,一种解决方法是注释掉您的 charset=utf8
在.editorconfig文件中行。
编辑:自VS 15.5起应该修复。
如果您使用的是对二进制文件的文件引用(而不是对项目中代码的项目引用),并且您所引用的编译二进制文件与计算机上的相应源代码不同步,则通常也会发生这种情况。之所以会发生这种情况,是因为您从源代码管理中下载了新版本的二进制文件,但没有附带新的源代码,或者您的计算机上有几个版本的二进制文件,并且正在引用旧副本,等等。如果确实如此这个问题,这是一个尽可能多地使用项目引用的充分理由。
对我来说,没有任何一项可以解决问题。我只是在该函数中添加了一行新代码,例如:
int a=0;
通过添加,我想我触发了Visual Studio将此功能添加到原始版本
对于我来说,几乎没有什么感觉可以解决此问题。如果存在未击中断点的特定源文件,则可以将其列出在
由于某些我不知道的原因,VS 2013决定将源文件放在该文件中,随后,我再也无法在该文件中遇到断点了。这可能是“源代码与原始版本不同”的罪魁祸首。
我也遇到了这个。导致我出现问题的情况:
我是通过打开以前的版本引起的(VS提示在IIS调试中提示我是否要指向该实例,我回答“是”),然后打开当前版本(再次以“是”响应IIS提示) ),然后尝试在先前版本中进行调试。
为了解决这个问题,我仅关闭并重新打开了先前的预期版本,然后再次将其声明为调试源。
尝试在调试模式下运行时禁用并重新设置断点,而不要在启动调试模式之前执行此操作。
如果您的解决方案中有多个项目,请确保将正确的项目设置为StartUp Project
。要将特定项目设置为解决方案的“启动项目”,请右键单击该项目,然后选择Set As StartUp Project
。
正确设置启动项目后,线程已达到所需的断点。
我在vs2017的32位版本中体验了这一点。
确实没有一种解决方案对我有用。我重新启动,清除了IDE文件,清理了构建的解决方案,从git repo中拉出了文件,并重新构建了该解决方案。
我从nuget中获取了64位的依赖关系,并且在使用该程序集后,就不再将这些源构建到最终的可执行文件中,而是构建了IDE缓存的源。
我删除了nuget配置,删除了引用的程序集,下载了源代码,手动构建了log4net,对其进行了签名,将其添加到项目中的文件夹中,添加了对它的引用,然后我可以再次进行调试。
这很痛苦,我希望它能出现在答案列表中,以供所有人查看。
编辑:尽管在IDE设置中启用了“提示生成错误”选项,但是在生成期间没有错误。
在Windows 7,Visual Studio Express 2010下,如果您已激活使用对Windows XP SP3使用兼容模式选项,则可能会发生此错误。
我取消选中该选项,它再次完美运行。右键单击VS或可执行文件的快捷方式,选择属性,然后兼容性。
首先,我从命令行尝试;
从命令行删除临时文件确实起作用。
C:\ Windows \ Microsoft.NET \ Framework64 \ v4.0.30319 \临时ASP.NET文件> rd / s根
当我在工具->选项->调试->常规中禁用“仅启用我的代码”选项时
这个问题为我解决了。这是一个WCF应用程序,正在尝试调试ashx页面。 http://blogs.msdn.com/b/zainnab/archive/2010/10/25/understanding-just-my-code.aspx