Blazor 客户端调试

Posted

技术标签:

【中文标题】Blazor 客户端调试【英文标题】:Blazor client-side debugging 【发布时间】:2019-10-09 13:27:33 【问题描述】:

我注意到我的所有 C# 断点都没有被命中,因为调试似乎对客户端 Blazor 应用程序禁用。

有没有办法附加调试器或以某种方式启用调试器?

谢谢

【问题讨论】:

【参考方案1】:

Visual Studio 中没有客户端 Blazor 的调试体验。目前唯一的选择是使用 Chrome 调试器。

这在官方文档中都有解释,https://docs.microsoft.com/en-gb/aspnet/core/blazor/debug?view=aspnetcore-3.0

【讨论】:

这对于 ASP.NET Core 3.1 不再适用,更多详细信息可以在答案链接中找到。【参考方案2】:

喜欢一些图片的朋友,这里分步使用 Visual Studio 16.4 预览版(.NET Core 3.1 预览版 2)和 Chrome 78 版。

使用调试配置文件启动应用。例如

网站加载后,将光标放在 chrome 选项卡上按“Shift+Alt+D”。

Chrome 将打开一个新标签,显示“无法找到可调试的浏览器标签”。找到消息“Press Win+R”的第一个实例。复制下面以“chrome --remote-debugging-port...”开头的整行

点击“Win+R”并粘贴您刚刚复制的文本并点击回车。将打开一个新的 Chrome 窗口..

第二次,按“Shift+Alt+D”,您现在应该会看到一些更有希望的东西..

从这里开始,设置几个断点,例如

返回运行 Blazor 应用的选项卡,触发断点。 从这里您可以按 F10 执行单步操作,按 F8 恢复。如图所示,通过“Scope”窗口检查本地人。

【讨论】:

你好,我已经按照你说的做了,我得到了他的调试器新标签。然而,我的应用程序没有显示在调试器中,而是空的,任何建议 嘿 - 您正在执行以运行 Chrome 远程调试器的 cmd 示例是什么?另外,假设您使用的是 Chrome 70 或更高版本? 嘿,我使用的是最新版本的 chrome,但没有使用远程调试器。我想在本地调试。我仍然无法调试,但是我有点厚脸皮,结果是 Console.WriteLine($"Blah Blah some variable: foo"); 仍然没有成功:(【参考方案3】:

在最新版本的 blazor 预览功能中添加了使用 Visual Studio 调试客户端代码。按照以下链接中的说明,了解如何升级您的解决方案和使用调试器。

https://devblogs.microsoft.com/aspnet/blazor-webassembly-3-2-0-preview-3-release-now-available/

【讨论】:

【参考方案4】:

是的,有一种方法可以调试您的客户端 C# 代码:

1.用户IE“Microsoft Edge”,“不要使用谷歌浏览器”。

2.使用自托管应用程序“不要使用 IIS express”。

3.点击 F5 并享受

【讨论】:

【参考方案5】:

这是目前 Blazor 项目中的一个已知问题。调试器启动速度比项目程序集慢/快,并且没有时间“查看​​”程序集。这是我的解决方法,直到他们解决这个问题。我在 Program.cs 中添加了一个延迟,以便在项目以调试模式启动时,它使调试器有时间正确附加。我使用了 5000 毫秒,但如果你的机器比我的慢,你可能需要增加这个值。

public class Program

    private static async Task DebugDelayAsync()
    
#if DEBUG
        await Task.Delay(5000);
#endif
    

    public static async Task Main(string[] args)
    
        await DebugDelayAsync();

        (...)
    

【讨论】:

【参考方案6】:

好消息是,现在(2020 年 8 月)您可以使用 Visual Studio 2019 V16.6 或更高版本来调试客户端 Blazor 代码!为此,请更新启动项目中的 launchSettings.json 文件,以在每个启动配置文件中包含以下 inspectUri 属性:

"inspectUri": "wsProtocol://url.hostname:url.port/_framework/debug/ws-proxy?browser=browserInspectUri"

来源:https://docs.microsoft.com/en-us/aspnet/core/blazor/debug?view=aspnetcore-3.1&tabs=visual-studio

【讨论】:

现在会为 Visual Studio 中的新项目自动添加“inspectUri”。 如果要将 Blazor WASM 项目添加到现有解决方案中,则需要为您的启动项目执行此手动步骤。

以上是关于Blazor 客户端调试的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 blazor 创建 cookie 客户端

预渲染 Blazor Wassembly 客户端应用程序

Blazor 客户端和 WCF

在 Blazor 客户端应用程序中加载图像

如何在 Blazor 中执行客户端 UI 事件

Blazor 客户端 (WASM) 应用程序洞察