Blazor WASM 没有达到断点

Posted

技术标签:

【中文标题】Blazor WASM 没有达到断点【英文标题】:Blazor WASM doesn't hit breakpoint 【发布时间】:2020-08-11 15:00:27 【问题描述】:

我有一个带有版本 5 程序集的 Blazor WASM 项目,并尝试根据这篇文章激活调试:https://docs.microsoft.com/en-us/aspnet/core/blazor/debug?view=aspnetcore-3.1

为此,我确保更新了所有程序集引用并调整了启动设置。后者现在看起来像这样:


  "iisSettings": 
    "windowsAuthentication": false,
    "anonymousAuthentication": true,
    "iisExpress": 
      "applicationUrl": "http://localhost:62310",
      "sslPort": 44325
    
  ,
  "profiles": 
    "IIS Express": 
      "commandName": "IISExpress",
      "launchBrowser": true,
      "inspectUri": "wsProtocol://url.hostname:url.port/_framework/debug/ws-proxy?browser=browserInspectUri",
      "environmentVariables": 
        "ASPNETCORE_ENVIRONMENT": "Development"
      
    ,
    "ApplySupportTool.Client": 
      "commandName": "Project",
      "launchBrowser": true,
      "inspectUri": "wsProtocol://url.hostname:url.port/_framework/debug/ws-proxy?browser=browserInspectUri",
      "applicationUrl": "https://localhost:5001;http://localhost:5000",
      "environmentVariables": 
        "ASPNETCORE_ENVIRONMENT": "Development"
      
    
  

这些也是我在 WASM 项目中的参考资料:

<PackageReference Include="System.Net.Http.Json" Version="3.2.0-preview5.20210.3" />
<PackageReference Include="Microsoft.AspNetCore.Components.DataAnnotations.Validation" Version="3.2.0-preview2.20160.5" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="3.2.0-preview5.20216.8" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Build" Version="3.2.0-preview5.20216.8" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="3.2.0-preview5.20216.8" PrivateAssets="all" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Runtime" Version="3.2.0-preview5.20216.1" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.Authentication" Version="3.2.0-preview5.20216.8" />

为了测试,我从默认项目中复制了“计数器”页面。但是当我按 F5 调试 IncrementCount 方法中的断点时,它并没有变红。 我在一个新创建的默认项目中进行了测试,它可以正常工作,所以我认为 Visual Studio Preview、Edge 和 .net 核心的版本正确。

我注意到的是开发控制台中的这个警告,它只出现在我现有的项目中,而不是新创建的默认项目中:

DevTools 无法加载 SourceMap:无法加载 chrome-extension://ndcileolkflehcjpmjnfbnaibdcgglog/include.preload.js.map 的内容:HTTP 错误:状态代码 404,net::ERR_UNKNOWN_URL_SCHEME

我是否需要添加或调整其他内容才能使其正常工作?在上面的文章中,据我所知,我找不到任何东西。

【问题讨论】:

这里也一样,不过我在上次更新之前就已经工作了。 ***.com/questions/56267303/…你看过这个帖子吗?可能重复 【参考方案1】:

这是目前 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();

            (...)
        
    

【讨论】:

我尝试了很多解决方案,甚至是来自官方 aspnetcore 存储库的一个解决方案,但这就像一个魅力......哈哈 一年多后,这仍然是 VS2019 中的一个问题,这仍然是我发现的唯一有效的解决方案。【参考方案2】:

这可能对某人有所帮助。就我而言,我删除了解决方案的隐藏 .vs 文件夹,并且断点再次起作用。此外,这还修复了 Chrome 调试不再起作用的问题。

【讨论】:

【参考方案3】:

几天前我也发生了类似的事情。

我采取的步骤如下:

编辑调试配置文件。就我而言,我编辑了端口并删除了 https 协议选项。 编译并检查调试点是否再次正常工作。 编辑调试配置文件以返回初始配置。我没有撤消更改,我再次手动编辑了它们

【讨论】:

【参考方案4】:

如果之前的方法不起作用,请尝试:

    从最佳答案中实现 DebugDelay。 使用记事本打开[您的项目]\Client\Properties\launchSettings.json 在iisSettings..“applicationUrl”:“http://localhost:50454”下,复制本地主机.eg。 http://localhost:50454 在 Visual Studio IDE 中,调试,[我的应用].server.debug* 属性/网络服务器设置/应用 URL。粘贴到剪贴板中。

不要问我为什么它起作用了,但是它确实起作用了,烦人的“未绑定断点不会被命中”消失了。

【讨论】:

以上是关于Blazor WASM 没有达到断点的主要内容,如果未能解决你的问题,请参考以下文章

为啥在启用 AOT 编译的情况下没有为 blazor webbasesembly 生成 .wasm 文件?

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

Blazor WASM 视图模型

trace32无法到达预期断点

Blazor Wasm 独立发布到 IIS

Blazor WASM 中的 MudSelect 问题