无法在 program.main Blazor Client wasm 中命中断点

Can't hit breakpoint in program.main Blazor Client wasm

创建一个基本的 Blazor 应用程序,我正在尝试调试我的应用程序的 main/start 方法。 主要是检查我正在注入的对象,主要是从 appsettings.json.

获取配置

我还在 lauchSettings.json 中添加了浏览器调试的 json 设置,但没有成功。

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

我检查了 google 但与 Program.Main() 断点相关的解决方案并不多。 有什么建议吗?

public class Program
{
    public static async Task Main(string[] args)
    {

        var builder = WebAssemblyHostBuilder.CreateDefault(args);



        builder.RootComponents.Add<App>("#app");
        builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5001/") });
        builder.Services.AddScoped<DashboardDataService>();
        builder.Services.AddScoped<TrTradingSignalBotApiService>();
        builder.Services.AddTelerikBlazor();

        await builder.Build().RunAsync();
    }
}

更新:The documentation that describes this

好吧,这很难看,但大概您只希望一次性使用它,所以只需等待几秒钟 - 对于我的桌面,2 秒就足够了 - 它让调试器有时间进行附加。一旦找到适合您的延迟,它就会起作用。

注意,我无法让 Debugger.IsAttachedDebugger.Break() 工作,所以你必须在编辑器中设置断点。

将延迟包装在 #if DEBUG...#endif 中,以确保您不会在适当的时候发布。

public class Program
{
    public static async Task Main(string[] args)
    {
#if DEBUG        
        await Task.Delay(2000);
#endif
        var builder = WebAssemblyHostBuilder.CreateDefault(args);

        builder.RootComponents.Add<App>("#app");
        builder.Services.AddTransient(sp => new HttpClient { BaseAddress = new Uri("https://localhost:5001/") });
        builder.Services.AddScoped<DashboardDataService>();
        builder.Services.AddScoped<TrTradingSignalBotApiService>();
        builder.Services.AddTelerikBlazor();

        await builder.Build().RunAsync();
    }
}