"The breakpoint will not currently be hit. A copy of file was found in dll file, but the current source code is different"

"The breakpoint will not currently be hit. A copy of file was found in dll file, but the current source code is different"

我不断收到此错误消息,提示存在 .cs 文件的副本,因此不会触发断点。

我试过清理解决方案,重建,删除obj和bin文件夹中的.pdb文件,关闭VS重新启动,重新启动整个机器(是Windows!有时最复杂,无法解释的问题像这样修复:\ )

知道我还能尝试什么吗?这是 VS2015 上的 .net 项目

检查CS文件存储的物理目录,可能有两个单独的文件,如果没有,请在文本编辑器(不是VS)中打开.csproj。查看该文件是否被引用了两次。如果是这样,只需删除其中一行。如果这不起作用,您可以随时按照它说的去做并设置断点位置:)

这里有一些要看的东西:

  1. 如果您最近更改了命名空间或 class 名称,旧版本的 dll 可能会在 asp.net 缓存中徘徊。经常把这里的文件删掉重建就可以解决问题

c:\Users\yourname\AppData\Local\Temp\Temporary ASP.NET 文件\

  1. 检查您的观点以确保您引用了正确的 class 名称。

我发现了问题,原来 IIS 配置为使用我备份文件夹中项目的不同副本。这听起来很傻,但如果有人有类似的问题,我会保留这个问题。

尝试重建解决方案。

有时会有 post-build 脚本将 DLLs 从一个项目复制到另一个项目,以便在不同项目中更新 DLL。如果您只修改和编译一个项目,那么其中一些脚本可能不会执行,并且旧的 DLLs 可能不会更新。

如果有人遇到同样的问题,请转到 iis,然后转到左侧的应用程序池,然后 select 您的应用程序池,然后右键单击查看应用程序。现在在物理路径下,您将能够看到虚拟路径映射到的物理路径,因此请确保物理路径指向正确的文件夹,如果它没有指向正确的文件夹,请从中删除您的应用程序应用程序池并再次添加

尽管我当前的项目配置设置为 Debug,但它似乎已被编译为 Release

我从我的项目中删除(删除)Web.Release.config,重新编译解决方案,然后放入 Web.Release.config返回。

现在一切正常。多么奇怪的行为,嗯。 :)

当您尝试从根(项目的根)文件夹复制成功构建的项目并将其副本保存在各自 Visual Studio 的 "Project" 文件夹中时,调试项目会发生这种情况。

执行上述步骤时,Visual Studio 调试位置有时会一直引用 copy/back-up 文件夹中的内置 DLL。

同样可以通过这里写的方法之一来改变。

但是如果您使用的是 Visual Studio 的内置 IIS-EXPRESS,那么您需要导航到项目属性 "Properties|alt+enter" => "Web" => 在服务器部分, select IIS Express => 对于当前项目 URL,单击 "Create Virtual Directory"。

这将警告您当前项目 Url 被其他一些项目位置引用(您的副本|备份文件夹),确认您的 selection 对话框,然后你是,再次击中你的断点。

这可能是因为您 link 中指向了错误的库。

当我遇到这个问题时,我刚刚开始一个旧项目的新解决方案。我没有更改 Project->link->input 部分中的目标库。因此,一旦我进行更改,我就会收到此错误。每个解决方案都保留一份库的副本。

我遇到了同样的麻烦,通过删除 class 上的属性 [System.Diagnostics.DebuggerStepThroughAttribute()] 来决定。

当您调试与项目中另一个文件同名的 .cshtml 文件时,可能会发生这种情况。调试器选择其中一个文件作为正确匹配项(看似随机),因此在将临时 ASP.NET 文件中的文件与项目中的源代码进行比较时,它通常会发现不匹配项。我的解决方案是将一个或两个文件从 Standard.cshtml 重命名为更具体的名称。

我的 IIS 问题,某人或某些迁移组件更改了我的 Web 应用程序(基本设置)的物理路径。没有指向我在磁盘上的解决方案,而是指向具有旧版本应用程序的另一个位置。恢复正确的路径,修复它。

这是为那些尝试过上述所有方法但仍在寻找解决方案的人准备的。 我有类似的问题,无论我做什么,我都无法达到断点。 最后,我意识到我所指的 dll 与 IIS (root web.config) 使用的不同。 dll 安装在 GAC(全局程序集缓存)中,这就是调试器永远不会命中的原因,我们会看到这种警告。 请按照以下步骤解决它:

  1. 在GAC中找到引用,在“C:\Windows\Microsoft.NET\assembly\GAC_MSIL\YOUR DLL”处删除。并安装新修改的dll,安装命令为“gacutil -i YOURDLLWITHCOMPLETEPATH”
  2. 确保在 IIS 根 web.config 位置添加相同的 dll。 (我使用的是 customhttpmodule)。在我的例子中是“C:\inetpub\wwwroot\WEBSITENAME\bin”
  3. 删除位于“C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files”的临时文件夹
  4. IIS重置

它对我有用,希望对你也有用。

在 Visual studio 工具栏上,执行以下操作

  1. 转到工具、选项
  2. 滚动到“调试”项并单击
  3. select 选项一般
  4. 禁用选项“要求源文件与原始文件完全匹配”

我正在做ASP.NET核心项目,重启Visual Studio没有解决。

解决此问题的唯一方法是 在任务管理器中杀死 VBCSCompiler.exe 进程。