找不到用于调试.NET源代码的.cs文件


88

我尝试按照此MDSN演练设置调试.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源代码?

Answers:


140

好吧,以我为例,我没有尝试调试.Net框架,但是却遇到了相同的错误:找不到用于调试.NET源代码的.cs文件。因此,我必须在“工具”->“选项”->“调试”->“常规”-> “仅启用我的代码”下打开“仅启用我的代码”选项。

每个MS文档:

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

https://docs.microsoft.com/zh-cn/visualstudio/debugger/just-my-code


我启用了“ .NET Framework源代码步进”功能,该功能自动禁用了“仅我的代码”功能,这使我发疯,直到我发现它为止才可以介入。因此,在标记选项时要小心,以查看禁用的内容:)
艾伦·沃登

1
我以为我以前启用过此功能。我去检查了,果然没有被检查。谢谢!
coinbird

1
很好的答案并解决了我的问题,但这将跳过该文件,而不是介入其中。如果目标是进入文件,则可能需要其他解决方案。
Word重新排列器

51

检查Tools->-> Options-> Debugging-> General->Enable source server support使一切正常运行。我希望你也是如此


19
主,为什么它不起作用?尝试进入框架代码时仍会提示您浏览到源代码文件。
gravidThoughts

28

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


有效!重置后,我只是忽略了'options-> Debugging'设置并导入了我导出的内容。不错!
神秘林

我在VS 2015 Pro中工作,我当然不需要任何自定义设置,因为这会让他们不满意。
RandomUs1r

重置我的所有设置也为我解决了这个问题……真令人头疼。我有太多自定义颜色设置用于调试,因此必须将它们保存到单独的文件中,grrr我将无法再使用。
EspressoBeans

我重置了设置并重新启动了Visual Studio2017。重置后重启就可以了。
悉达多

我使用VS Ultimate 2013对Visual Basic .NET进行了此重置,因为这是我正在编码的内容,并且此重置停止了奇数datetime.cs找不到错误消息。
JohnH


7

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

这为我解决了:

Debug -> Delete all Breakpoints

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


在尝试了每个单独的JIT调试器设置组合,清理了我的解决方案,数百次重新启动VS2019,修复,重置所有设置等之后,等等,正是删除所有断点使我的“找不到源”错误消失了,当尝试调试XUnit测试时。AAAAAAAAAAARGH。谢谢@HomeMade
Ted

我不明白,但它确实解决了问题...
卢卡斯Kmoch

作为额外的步骤-我必须清理并重建我的解决方案-以使其对我有用。
Naren

5

这里所有的答案都涉及忽略/避免源代码,而不是实际进入源代码。

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

Tools-> Options-> Debugging-> General->Enable source server support在许多情况下都可以使用,但是我发现例如mscorlib.dll4.6.1缺少符号和/或反编译的源代码。所以我不能踏进像通用源代码Dictionary.csTask.cs作为例子。由于MS符号服务器的源和符号可能一直在变化。当您阅读本文时,我的问题可能已解决?

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

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

找不到源代码示例

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

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

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


1

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


它帮助了我。我安装了2019,一切都再次正常运行。也许我搞砸了我的设置。
Mo D Genesis

0

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

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

对于确实要禁用“仅我的代码”以进入具有PDB的其他程序集的情况,这很有用。Visual Studio中我想附带了符号mscorlib.dll,但也没有包括源所以有时步入事情会寻找一个“nullable.cs”或其他一些核心源文件。



0

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

转到解决方案的NuGet Manager并使用合并功能可以确保解决方案中的所有项目都使用相同的版本,从而为我解决了该问题。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.