【问题标题】:Cannot find .cs files for debugging .NET source code找不到用于调试 .NET 源代码的 .cs 文件
【发布时间】:2016-10-29 14:47:06
【问题描述】:

我尝试按照MDSN walkthrough 设置调试 .NET 源代码。符号缓存设置正确,检查“启用 .NET Framework 源单步执行”也是如此。

但随后,每当我想进入 .NET 代码时,都会提示我指定相关 cs 文件的位置。错误信息是 You need to find <filename>.cs to view the source for the current call stack frameThe debugger could not locate the source file <filename>.cs

有人建议我浏览文件(但我没有)或查看反汇编文件(但我不想这样做)。

如何步入.NET源代码?

【问题讨论】:

    标签: c# .net debugging


    【解决方案1】:

    好吧,就我而言,我并没有尝试调试 .Net 框架,但我遇到了同样的错误:找不到用于调试 .NET 源代码的 .cs 文件。所以 我必须打开“仅启用我的代码”选项:
    工具 -> 选项 -> 调试 -> 常规 -> 仅启用我的代码

    每个 MS 文档:

    您可以将 Visual Studio 配置为自动跳过系统、框架和其他非用户调用,并在调用堆栈窗口中折叠这些调用。

    https://docs.microsoft.com/en-us/visualstudio/debugger/just-my-code

    【讨论】:

    • 我启用了“.NET Framework 源单步执行”,它自动禁用了“仅我的代码”,这让我发疯了,直到我发现它才能介入。所以在标记选项时要小心,看看哪些被禁用:)
    • 我以为我以前启用了这个。我去查了,果然没有查。谢谢!
    • 很好的答案并解决了我的问题,但这将跳过文件而不是进入它。如果目标是进入文件,可能需要另一种解决方案。
    【解决方案2】:

    检查Tools -> Options -> Debugging -> General -> Enable source server support 神秘地使一切正常。我希望你也一样

    【讨论】:

    • 主啊,为什么它不起作用?尝试单步执行框架代码时,仍会提示浏览到源代码文件。
    【解决方案3】:

    这也花了我一个小时。我最终通过重置设置修复了它 -> 工具 -> 导入和导出设置 -> 重置所有设置

    【讨论】:

    • 成功了!重置后,我只是忽略“选项->调试”设置并导入我导出的内容。不错!!
    • 在 VS 2015 Pro 中工作,当然我没有任何我需要的自定义设置,因为这会让他们大吃一惊。
    • 重置我的所有设置也为我解决了这个问题......真是头疼。我有这么多用于调试的自定义颜色设置,不得不将它们保存到一个单独的文件中——我不能再使用了,grrr。
    • 我重置了设置并重新启动了 Visual Studio 2017。重置后重新启动就可以了。
    • 我使用 VS Ultimate 2013 为 Visual Basic .NET 进行了此重置,因为这是我正在编写的代码,并且此重置停止了奇怪的 datetime.cs 找不到错误消息。
    【解决方案4】:

    我已经尝试了上面的所有答案,但没有任何效果。

    这为我解决了:

    Debug -> Delete all Breakpoints

    它解决了问题!导致这个问题的原因太多了。

    【讨论】:

    • 在尝试了 JIT 调试器设置的每一个组合、清理我的解决方案、重新启动 VS2019 数百次、修复它、重置我的所有设置等等之后,删除所有断点使我尝试调试 XUnit 测试时,“找不到源”错误消失。啊啊啊啊啊。谢谢@HomeMade
    • 作为附加步骤 - 我必须清理并重建我的解决方案 - 使其适合我。
    • 如果所有断点都被删除,如何调试代码:/
    【解决方案5】:

    清理构建之前的解决方案为我解决了这个问题。

    只需导航并点击:

    1. Build -> Clean Solution.
    2. Build -> Build Solution (Ctrl + Shift + B).

    【讨论】:

      【解决方案6】:

      这里的答案都是关于忽略/避免源代码而不是实际介入它。

      @JBSnorro 在正确的轨道上,但问题是 Microsoft 似乎没有发布您可能遇到的所有 .NET 符号/源。我不知道这是否是他们故意的,但要进入 MS 源,他们需要发布每个程序集的每个版本,这是一项艰巨的后勤任务。

      Tools -> Options -> Debugging -> General -> Enable source server support 在很多情况下都可以使用,但我发现例如 4.6.1 的 mscorlib.dll 缺少符号和/或反编译资源。所以我不能以Dictionary.csTask.cs 之类的常见源代码为例。 由于 MS 符号服务器的源和符号可能一直在变化。当您阅读本文时,我的问题可能已经解决了吗?

      当我在 Jetbrain 的 Rider 中调试相同的解决方案时,我可以毫无问题地查看并逐步遍历每个 .NET 程序集中的每个类。但是在 VS 中,我只能进入某个班级而不能进入其他班级?

      如果您真的致力于进入所有 .NET 源代码,您可以使用 Jetbrain 的 DotPeek 并将 .NET 程序集反编译为实际的 .cs 文件到您的磁盘。那么当你看到这个时,

      您现在可以浏览您的磁盘,找到您使用 DotPeek 反编译的源代码。只需确保您反编译了您在项目中引用的相同程序集版本。否则,符号可能与正确的源代码行号不匹配。

      相反,如果您只是想隐藏这个“找不到源”而不是不断出现并且您不想进入没有源的代码,请阅读@Alex Sherman 的答案。您需要确定违规文件包含在哪个程序集中,然后将该程序集名称添加到排除列表中。

      值得深思,我不喜欢 Rider over VS。 Rider 仍然很原始,缺乏 VS 所拥有的大量内置工具。然而!!我喜欢在这种情况下并排安装它,因为我知道我可以更深入地了解杂草。

      【讨论】:

        【解决方案7】:

        转到工具 -> 选项 -> 调试 -> 并确保选中“仅启用我的代码”。

        这对我有用。确保支持它的工作

        【讨论】:

          【解决方案8】:

          遇到同样的问题,上述解决方案都没有帮助我解决问题。发生在 VS 2017 中。当我在 Visual Studio 2019 中运行项目时,一切正常。所以只是尝试在其他环境中运行它。希望这个答案对某人有所帮助

          【讨论】:

          • 它帮助了我。我安装了 2019 并且一切正常。也许我搞砸了我的设置。
          【解决方案9】:

          如果错误来自查找“nullable.cs”或其他一些核心源文件:

          您可以使用Debug -> Options -> Debugging -> Symbols 禁用特定模块的符号,然后使用底部的Specify Excluded Modules

          这对于您确实想要禁用“仅我的代码”以进入您拥有 PDB 的其他程序集的情况很有用。我认为 Visual Studio 带有 mscorlib.dll 的符号,但 包含源代码,因此有时单步执行会查找“nullable.cs”或其他一些核心源文件。

          【讨论】:

            【解决方案10】:

            在项目中更新 NuGet 包时出现此错误,而在解决方案的其他项目中缺少更新它。

            转到解决方案的 NuGet 管理器并使用合并功能,确保解决方案中的所有项目使用相同的版本,为我解决了问题。

            【讨论】:

              【解决方案11】:

              就我而言,我最终重命名了这个类。也许它与其他模块混淆了。一旦我重命名了它,我就可以介入了。

              【讨论】:

                【解决方案12】:

                我遇到了同样的问题。 Enable Just My CodeEnable source server support 已被选中。

                但我的问题不是那个。 csproj 文件有一个没有开始标签的额外标签。

                我删除了它并解决了问题。

                希望对遇到此问题的人有所帮助。

                【讨论】:

                  【解决方案13】:

                  在程序属性部分使用checkbox to make single instance application 后出现此错误:

                  奇怪的是在此之前它没有抛出错误。该程序每次启动时都会突然崩溃,并且不会在显示我没有代码错误的行上中断。

                  取消选中“制作单实例应用程序”后,程序立即启动。

                  【讨论】:

                    猜你喜欢
                    • 2014-01-15
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 2015-09-29
                    • 2021-10-04
                    • 2019-01-27
                    • 1970-01-01
                    相关资源
                    最近更新 更多