我尝试按照MDSN walkthrough设置调试.NET源代码。符号缓存已正确设置,检查“启用.NET Framework源步进”也是如此。
但随后,每当我想进入.NET代码时,系统会提示我指定相关cs文件的位置。错误消息是
You need to find <filename>.cs to view the source for the current call stack frame
和The debugger could not locate the source file <filename>.cs
。
我被允许浏览文件(但我没有)或查看反汇编(但我不想这样)。
如何进入.NET源代码?
答案 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.dll
或Dictionary.cs
之类的通用源代码为例。 由于MS符号服务器的源和符号可能一直在变化。当您阅读本文时,我的问题可能已解决?
当我在Jetbrain的Rider中调试相同的解决方案时,我可以看到并逐步遍历每个.NET程序集中的每个类。但是,在VS中,我只能进入某些课程,而不能进入其他课程?
如果您真的致力于进入所有.NET源代码,则可以使用Jetbrain的DotPeek并将.NET程序集反编译为实际的.cs文件到磁盘。然后,当您看到此内容时,
您现在可以将磁盘浏览到使用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)
清洁构建之前的解决方案为我解决了该问题。
只需导航并单击:
Build
-> Clean Solution
。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 后出现此错误:
奇怪的是,在此之前它没有抛出错误。程序每次在启动时都会突然崩溃,并且不会在显示我没有代码错误的行上中断。
取消选中“制作单实例应用程序”后,程序立即启动。