找不到.cs文件来调试.NET源代码

时间:2016-10-29 14:47:06

标签: c# .net debugging

我尝试按照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源代码?

13 个答案:

答案 0 :(得分:78)

嗯,在我的情况下,我并没有尝试调试.Net框架,但我得到了同样的错误:无法找到.cs文件来调试.NET源代码。所以 我不得不打开下面的“启用我的代码”选项:
 工具 - &gt;选项 - &gt;调试 - &gt;一般 - &gt;只启用我的代码

每个MS文档:

  

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

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

答案 1 :(得分:34)

检查Tools - &gt; Options - &gt; Debugging - &gt; General - &gt; Enable source server support神秘地使一切运转起来。我希望你也是如此

答案 2 :(得分:13)

这花了我一个小时。我最后通过重置设置来修复它 - &GT;工具 - &gt;导入和导出设置 - &gt; Resett

答案 3 :(得分:2)

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

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

Tools-> Options-> Debugging-> General-> Enable source server support在很多情况下都可以使用,但我发现例如{{1} }对于4.6.1缺少符号和/或反编译的源。因此,我无法以mscorlib.dllDictionary.cs之类的通用源代码为例。 由于MS符号服务器的源和符号可能一直在变化。当您阅读本文时,我的问题可能已解决?

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

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

Example of source code not found

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

相反,如果您只是想隐藏这种“找不到源”,而又不想进入没有源的代码,请阅读Task.cs的答案。您将需要找出有问题的文件包含在哪个程序集中,然后将该程序集名称添加到排除列表中。

值得深思,我不是Rider的VS粉丝。 Rider仍然有些陌生,缺乏VS内置的疯狂工具。然而!!我喜欢在这样的情况下并排安装它,因为我知道我可以更深入地研究杂草。

答案 4 :(得分:1)

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

答案 5 :(得分:1)

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

这对我有用。确保为 IT WORKS 点赞

答案 6 :(得分:0)

如果错误是由于查找“ nullable.cs”或其他一些核心源文件引起的:

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

这对于您要做想要禁用“仅我的代码”以进入具有PDB的其他程序集的情况很有用。我认为Visual Studio带有mscorlib.dll的符号,但是包括源代码,因此有时进入内容目录会寻找“ nullable.cs”或其他一些核心源文件。

答案 7 :(得分:0)

清洁构建之前的解决方案为我解决了该问题。

只需导航并单击:

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

答案 8 :(得分:0)

您可以在此处找到要下载的源代码,以便可以正确调试。 https://referencesource.microsoft.com/#mscorlib,namespaces

答案 9 :(得分:0)

在项目中更新NuGet软件包时遇到此错误,而在解决方案的其他项目中却没有更新它。

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

答案 10 :(得分:0)

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

这为我解决了问题

Debug-> Delete all Breakpoints

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

答案 11 :(得分:0)

就我而言,我想重命名课程。也许它与其他模块混淆了。重命名后,我可以介入。

答案 12 :(得分:-1)

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

Make single instance application

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

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