ChatGPT解决这个技术问题 Extra ChatGPT

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

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


d
dier

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

根据 MS 文档:

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

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


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

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


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

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


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

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

这为我解决了它:

Debug -> Delete all Breakpoints

它解决了这个问题!很多不同的事情导致了这个问题。


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

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

只需导航并单击:

构建 -> 清洁解决方案。构建 -> 构建解决方案(Ctrl + Shift + B)。


E
Eat at Joes

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

@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 文件到您的磁盘。那么当你看到这个时,

https://i.stack.imgur.com/hxo7W.png

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

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

深思熟虑,我不是 VS 骑士的粉丝。 Rider 仍然很原始,缺乏 VS 所拥有的大量内置工具。然而!!在我知道我可以深入杂草的情况下,我喜欢将它并排安装。


A
AdamL

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

这对我有用。确保支持 IT WORKS


A
Alex Sherman

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

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

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


O
OlegI

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


它帮助了我。我安装了 2019 并且一切正常。也许我搞砸了我的设置。
R
RonnyR

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

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


K
Kirsten

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


A
Arjun MG

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

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

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

希望它可以帮助面临这个问题的人。


C
CodeCaster

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

https://i.stack.imgur.com/8gjec.png

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

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅