c# - 无法在 program.main Blazor 客户端 wasm 中命中断点
问题描述
创建一个基本的 Blazor 应用程序,我正在尝试调试我的应用程序的 main/start 方法。主要是检查我注入的对象,主要是从 appsettings.json 中获取配置。
我还在 lauchSettings.json 中添加了用于浏览器调试的 json 设置,但没有成功。
"inspectUri": "{wsProtocol}://{url.hostname}:{url.port}/_framework/debug/ws-proxy?browser={browserInspectUri}"
我已经检查了谷歌,但与 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();
}
}
解决方案
更新:描述这个的文档
好的,这很难看,但大概您只希望它一次性使用,所以只需等待几秒钟 - 对我来说,在我的桌面上,2 秒就足够了 - 它给了调试器附加时间。一旦你找到适合你的延迟,它就会起作用。
请注意,我无法获取Debugger.IsAttached
或Debugger.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();
}
}
推荐阅读
- html - 如何使用存储在 Firestore 中的图像 url
- laravel - Laravel Spatie Query Builder:使用 Axios 使用 API 的正确方法
- c++ - 对构造函数语法的一点误解
- php - in_array() 期望参数 2 是数组,布尔值在行中给出
- dsl - Xtext 验证器 - 检查所有元素 X 以进行元素 Y 验证
- python - 根据索引位置替换列表组件
- android - AsyncTask 上未显示进度对话框
- opengl - Z 实际上应该是透视除法的什么值?
- html - 在 iOS 和 MacOS 上的 Safari 中,溢出属性工作异常
- git - 来自 gitlab 的新分支不会出现在 git bash 中