调试.NET核心源代码 [英] Debug .NET Core source

查看:35
本文介绍了调试.NET核心源代码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用Visual Studio 2019和.NET Core 3 Web应用程序。我想调试.NET Core源代码,这样当出现错误时,我就可以深入代码并更详细地检查它。由于我找不到关于如何做到这一点的确切描述(即使在Microsoft文档站点上也是如此),因此我将尝试在这里总结一下我到目前为止所知道的内容。

我在Visual Studio中有以下选项:

  1. 仅启用我的代码
  2. 启用.NET Framework源代码单步执行
  3. 启用源服务器支持
  4. 启用源链接支持

前两个选项是互斥的。我想我应该选择第二个选项,尽管我不了解此选项中是否包含.NET Core?

现在,由于.NET Core是开源的,并且可以在GitHub上获得,我不明白第三种选择与第四种选择之间的区别。第三个应该允许我从Microsoft符号服务器拉取源代码(符号包括源代码吗?)而第四个应该允许我从GitHub获取源代码?我需要其中一个吗?

首先,我在main方法中为CreateHostBuilder设置了一个断点,选择第三个选项并运行应用程序。在命中断点之后,我一直单步执行代码(F11),直到出现一条消息,提示";GenericHostBuilderExtensions.cs未找到";。它让我可以浏览它,但我不知道在哪里可以找到它。

让我们再试一次,这次选择第四个选项(并取消选择第三个)。现在,命中断点后,Visual Visual Studio让我通过Source Link下载前面提到的文件。我接受,但结果是消息

源链接错误:Azure DevOps:所有帐户的身份验证失败。使用‘文件->帐户设置.’若要添加新帐户或刷新凭据,请执行以下操作。

嗯,我是使用我的Microsoft帐户登录的。我还应该做什么?

我再重复一遍,这次选择了第三个和第四个选项。结果相同。

现在我选择另一个源链接选项:";回退到Git凭据管理器.并重新开始(&q;)。结果相同。

当然,我广泛地搜索并花了相当长的时间试图找到解决方案,但我遗漏了一些东西。如果您能帮助我了解所提到的选项到底有什么作用,以及如何通过单步执行.NET核心源代码进行调试,我将不胜感激。

推荐答案

也许this issue可以提供帮助 解决您的难题。

就像vancem在该问题中所描述的那样,调试.Net核心源代码所需做的全部工作就是:

1.取消选中(工具->选项->调试->仅我的代码)复选框。

2.确保已选中(工具->选项->调试->符号设置->Microsoft符号服务器)复选框

3.确保选中(工具->选项->调试->启用源代码链接支持)复选框

"找不到GenericHostBuilderExtensions.cs"。

至于你为什么在这里不及格。我认为这与我上面提供的问题类似。对于.net core 3.0预览版,它的一些库目前在GitHub中没有源代码链接,所以VS无法获取它们。(就像2017年的.Net Core 2.0一样,现在已经修复了)

实际上,如果您按照上面的选项操作,您将找到you can debug well .net core 2.x web-app,但可能失败for not finding source links for .net core 3.0

作为解决办法:

1.您可以尝试从git手动获取源代码,然后转到Solution->Properties->Debug Source Files,然后将您的目录添加到"包含源代码的目录"中,以检查它是否对某些情况有帮助。(感谢他,由Vancem详细描述)

2.GenericHostBuilderExtensions.csGenericHostBuilderExtensions.csGenericHostBuilderExtensions.cs的源代码here我重现了同样的问题,下载xx.cs调试时查找可以解决。

3.但我不得不说,这种方式需要一些时间。因为这个文件不仅没有源文件,我们还会遇到类似的问题,除非.Net core3.0中的所有源文件都有源链接,否则我们必须通过从GIT获取相应的源文件来解决这个问题。但是可能需要一些时间,很抱歉给您带来不便。我建议你可以把它张贴在GitHub上,并在这里分享链接。对它感兴趣的成员将帮助投票。

希望以上所有内容都有帮助。

这篇关于调试.NET核心源代码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆