gpt4 book ai didi

c# - 如何让 System.Diagnostics 在 Ubuntu Linux 上的 Blazor 应用程序中工作?

转载 作者:行者123 更新时间:2023-12-04 18:43:17 25 4
gpt4 key购买 nike

我正在尝试在 Ubuntu Linux 上的 Blazor 应用程序中使用 Debug.WriteLine。当我使用 dotnet run 运行程序时或使用 F5 时要使用调试器,程序可以正常工作,但调试语句不起作用。我使用的编辑器是 Visual Studio Code。
我见过类似的问题,但没有一个在 Ubuntu 或其他 Linux 发行版上解决这个问题。
这是我的代码中调用 Debug.WriteLine 方法的 DamageCalculator 类的构造函数和方法:

    using System;
using System.Diagnostics;

.
.

public DamageCalculator()
{
Debug.WriteLine("Created an instance of DamageCalculator");
}
public void CalculateDamage()
{
Roll = Roll3Dice();
Debug.WriteLine("Rolled the dice with roll: " + Roll);
Damage = (int)(Roll * Multiplier)
}
csproj 文件:
<Project Sdk="Microsoft.NET.Sdk.BlazorWebAssembly">
<PropertyGroup>
<TargetFramework>net5.0</TargetFramework>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly" Version="5.0.4" />
<PackageReference Include="Microsoft.AspNetCore.Components.WebAssembly.DevServer" Version="5.0.4" PrivateAssets="all" />
<PackageReference Include="System.Net.Http.Json" Version="5.0.0" />
</ItemGroup>
</Project>
启动设置.json
{
"profiles": {
"damage_calculator": {
"commandName": "Project",
"dotnetRunMessages": "true",
"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"
}
}
}
}
vscode 的 launch.json:
{
"version": "0.2.0",
"configurations": [
{
"type": "blazorwasm",
"name": "Launch and Debug Blazor WebAssembly Application",
"request": "launch"
}
]
}
有谁知道它为什么不起作用以及如何使它起作用?

最佳答案

如果你想使用 Debug.WriteLine我建议使用内置记录器的功能。
它可以跨平台工作,您可以通过环境变量进行配置:

  • 要记录的严重级别(跟踪、调试、信息、警告、错误、严重)
  • 登录媒体(磁盘、控制台)
  • 特定平台功能,例如使用 systemd (linux)、eventlog (windows) 等。
  • 提供一站式服务

  • 它还记录到 Blazor - PWA 中的浏览器控制台:
    enter image description here
    (火狐控制台图像,用油漆编辑)
    在大多数 .net 核心项目中,它默认启用。
    使用 API Controller
    public class CommandController : ControllerBase
    {
    private readonly ILogger<CommandController> _logger;
    public CommandController(ILogger<CommandController> logger)
    {
    _logger = logger;
    }

    [HttpGet]
    public IActionResult Test()
    {
    _logger.LogDebug("Hi there!");
    }
    }
    WPA 西装外套:
    @inject ILogger<Index> logger
    <!-- html stuff -->
    @code {
    protected async override Task OnParametersSetAsync()
    {
    logger.LogDebug("hellow!");
    }
    }
    在 blazor 中,它并不总是开箱即用。有关详细信息,请参阅此页面:
    https://docs.microsoft.com/en-us/aspnet/core/blazor/fundamentals/logging?view=aspnetcore-5.0&pivots=webassembly
    配置
    至于 blazor,您可能需要在 program.cs 中添加这一行:
    builder.Logging.SetMinimumLevel(LogLevel.Debug);
    通常,它伴随着 application.json 中的默认日志设置:
    "Logging": {
    "LogLevel": {
    "Default": "Debug",
    "Microsoft": "Warning",
    "Microsoft.Hosting.Lifetime": "Information"
    }
    }

    关于c# - 如何让 System.Diagnostics 在 Ubuntu Linux 上的 Blazor 应用程序中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66736354/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com