Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.net &引用;当前不会命中断点。源代码与原始版本不同。”;这是什么意思?_.net_Visual Studio_Debugging - Fatal编程技术网

.net &引用;当前不会命中断点。源代码与原始版本不同。”;这是什么意思?

.net &引用;当前不会命中断点。源代码与原始版本不同。”;这是什么意思?,.net,visual-studio,debugging,.net,Visual Studio,Debugging,在VisualStudio中调试时,有时我会添加一个断点,但它是空的,VS说“当前不会命中断点。源代码与原始版本不同。”显然,这使我无法进行调试 这个信息究竟意味着什么?什么原版?如果我刚刚打开解决方案,没有对代码做任何更改,怎么会有“原始版本”?您曾经这样做过吗 如果您勾选该框并按下“是”,即使您的项目没有编译,您也将运行最后一个成功的构建。这意味着无论何时设置断点,都会出现该错误 尝试更改此值: 工具 选择权 项目和解决方案 构建并运行 运行时,发生生成或部署错误时:不启动

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

这个信息究竟意味着什么?什么原版?如果我刚刚打开解决方案,没有对代码做任何更改,怎么会有“原始版本”?

您曾经这样做过吗

如果您勾选该框并按下“是”,即使您的项目没有编译,您也将运行最后一个成功的构建。这意味着无论何时设置断点,都会出现该错误

尝试更改此值:

  • 工具
    • 选择权
      • 项目和解决方案
        • 构建并运行
          • 运行时,发生生成或部署错误时:不启动

如果使用文件引用二进制文件(而不是项目引用项目中的代码),并且所引用的已编译二进制文件与计算机上相应的源代码不同步,也会发生这种情况。这可能是因为您从源代码管理下载了一个新版本的二进制文件,但没有附带新的源代码,或者您的计算机上有几个版本的二进制文件,并且引用了一个旧版本,等等。如果这确实是个问题,尽可能多地使用项目引用是一个很好的理由。

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


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

当调试期间或调试会话之间系统时间发生变化时,可能会发生这种情况,无论是编程、手动还是外部程序。

正如它所说,“源代码与原始版本不同”


在解决方案资源管理器中的项目文件夹上单击鼠标右键,然后选择“清理”。建立一个新版本的项目和断点将再次工作

如果您在调试生成配置中取消选中DLL项目,您的新代码将永远无法生成


转到
生成-->配置管理器…
(在VS2010中),检查当前生成配置中是否检查了包含您尝试调试的代码的项目。

当您使用激活器且设置断点的程序集尚未加载时,您会收到此消息

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

转到

  • 工具
    • 选择权
      • 调试
        • 一般的

取消选中“要求源文件与原始版本完全匹配”

对于我来说,这是在处理网站项目时。清理这些临时文件夹后,我返回了正确的编译器错误:

  • C:\Documents and Settings\%username%\AppData\Local\Temp\Temporary
    ASP.NET文件
  • C:\windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET
    文件

我最终解决了这个问题,因为我发现一个类文件故意移动到了一个子文件夹中,不知何故又出现在根文件夹中。VS在我编辑另一个时使用了这个。

这也发生在调试一个C++项目时,它加载了一个用一些CRL语言(托管C++、C语言等)实现的模块。在这种情况下,错误消息确实具有误导性


解决方案是将公共语言运行时(CLR)支持配置属性放入启动项目,并重新编译该属性。

对我有效的方法是将解决方案平台从x86更改为任何CPU。更改为“任何”后,我设置了一个停止地址,运行了网站,打开页面,单击按钮,它停止了。我关闭了站点,更改回x86并成功执行了相同的序列。

解决方案配置中选择调试,而不是发布


我也遇到了这个问题。导致我的问题的条件:

  • 我正在本地运行一个完整的IIS7实例
  • 我正在将我的软件版本控制到不同的项目中
导致这种情况的原因是,我打开了以前的版本(VS提示我是否要在IIS调试中指向此实例,我回答“是”),然后打开当前版本(再次以“是”响应IIS提示),然后尝试在以前的版本中调试


为了解决这个问题,我只是关闭并重新打开了先前的和预期的版本,再次将其声明为调试源。

尝试在调试模式下运行时禁用并重新设置断点,而不是在启动调试模式之前执行此操作。

在我的情况下,我是在VS 2012中连接到一个正在运行的进程。附加时,您可以选择以各种模式(本机、脚本、silverlight、managed 2.0、managed 4.0等)进行调试。默认情况下,调试器会自动选择该模式。然而,自动并不总是做出正确的选择。如果您的流程包含多种类型的代码,请确保
int a=0;