我已按照此处所示的说明运行 WSL,并且我可以在 Linux 环境中的 Windows 上成功调试我的 C# 应用程序。
问题是,默认情况下,如果我通过 WSL 运行,则不会显示控制台应用程序的控制台。 VS Immediate 窗口可以正常运行,因此我可以看到应用程序的输出,但我无法使用
Console.ReadLine()
。
任何有关 Visual Studio 设置的帮助,或在运行时在 WSL 中分配控制台的编程方式,我们都会表示赞赏。
您可以尝试对
OpenTelemery
包使用方法重载。
AddConsoleExporter
应该有助于在控制台窗口中显示所有日志。
以下是如何利用它的示例:
services.AddServiceTelemetry(
serviceName: serviceName,
configureTracer: providerBuilder => providerBuilder
// Enable for local debugging
.AddConsoleExporter()
.AddSource(sourceName)
.SetErrorStatusOnException(true)
.AddAspNetCoreInstrumentation((options) =>
{
options.EnrichWithHttpRequest = (activity, req) => ASPNetCoreExtension.EnrichHttpRequest(activity, req);
options.EnrichWithHttpResponse = (activity, res) => ASPNetCoreExtension.EnrichHttpResponse(activity, res);
options.EnrichWithException = (activity, ex) => ASPNetCoreExtension.EnrichHttpException(activity, ex);
}));
如上所示,您可以使用
AddAspNetCoreInstrumentation
方法进一步丰富您的日志。
请注意,ASPNetCoreExtension.EnrichHttpRequest
方法来自我的自定义实现代码。