【问题标题】:"The breakpoint will not currently be hit. A copy of file was found in dll file, but the current source code is different"“当前不会命中断点。在 dll 文件中找到了文件副本,但当前源代码不同”
【发布时间】:2016-10-15 17:43:51
【问题描述】:

我不断收到这个错误,说有 .cs 文件的副本,因此断点不会被命中。

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

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

【问题讨论】:

  • 突然间,我的一个启动项目从启动项目列表中删除,导致此错误,因为我试图在这个项目的文件中设置断点。将项目重新添加到启动项目中解决了我的问题。

标签: c# .net visual-studio-2015 breakpoints


【解决方案1】:

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

【讨论】:

  • 我检查了物理位置,只有一个文件。 .csproj 仅引用该文件一次。
  • 这是一个很好的提示。我从一个旧项目中迁移了文件,并且不知何故从旧位置打开了一个。该文件只有 1 个引用,但打开它两次(一次在旧位置,一次在新位置)就足以导致此错误。
【解决方案2】:

以下是一些值得关注的事情:

  1. 如果您最近更改了命名空间或类名,则旧版本的 dll 可能会在 asp.net 缓存中徘徊。通常删除此处的文件并重新构建即可解决问题。

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

  1. 检查您的视图以确保您引用了正确的类名。

【讨论】:

  • 在我的例子中,这些文件在这里:C:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files
【解决方案3】:

我发现了问题,事实证明 IIS 被配置为使用我在备份文件夹中拥有的项目的不同副本。这听起来很傻,但如果有人有类似的东西,我会保持这个问题的开放。

【讨论】:

  • 有一个非常相似的问题。重启 VS 有帮助。
  • 如果你正在运行一个 web 项目,进入项目设置/web/Servers 下,点击按钮 Create Virtual Directory,这将重新映射文​​件夹并获取正确的源文件...跨度>
【解决方案4】:

尝试重建解决方案。

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

【讨论】:

    【解决方案5】:

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

    【讨论】:

      【解决方案6】:

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

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

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

      【讨论】:

        【解决方案7】:

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

        执行上述步骤时,Visual Studio 调试位置有时会一直引用复制/备份文件夹中的已构建 DLL。

        可以通过此处编写的方法之一进行更改。

        但是如果你使用 Visual Studio 的内置 IIS-EXPRESS,那么你需要导航到项目属性 "Properties|alt+enter" => "Web" => 在 Servers 部分,选择 IIS Express => For current项目网址,点击“创建虚拟目录”。

        这将警告您当前项目 URL 由其他项目位置(您的复制|备份文件夹)引用,确认您对对话框的选择,然后您就可以再次点击断点。

        【讨论】:

          【解决方案8】:

          这可能是由于在您的链接中指向了错误的库。

          当我遇到这个问题时,我刚刚用一个旧项目开始了一个新的解决方案。我没有更改 Project->link->input 部分中的目标库。所以一旦我做出改变,我就得到了这个错误。每个解决方案都保留一个库的副本。

          【讨论】:

            【解决方案9】:

            我遇到了同样的问题,并通过删除类上的属性[System.Diagnostics.DebuggerStepThroughAttribute()] 来决定。

            【讨论】:

              【解决方案10】:

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

              【讨论】:

                【解决方案11】:

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

                【讨论】:

                  【解决方案12】:

                  这是为那些尝试了上述所有方法并仍在寻找解决方案的人准备的。 我有类似的问题,无论我做什么,我都无法达到断点。 最后,我意识到我所指的 dll 与 IIS(root web.config)正在使用的 dll 不同。 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. IISRESET

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

                  【讨论】:

                    【解决方案13】:

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

                    1. 转到工具、选项
                    2. 滚动到调试项并单击
                    3. 选择常规选项
                    4. 禁用选项要求源文件完全匹配原始文件

                    【讨论】:

                      【解决方案14】:

                      我在做 ASP.NET Core 项目,重启 Visual Studio 并没有解决。

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

                      【讨论】:

                        猜你喜欢
                        • 2015-06-23
                        • 2015-03-27
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 1970-01-01
                        • 2019-03-17
                        • 2011-01-28
                        相关资源
                        最近更新 更多