NET 6:“IServiceCollection”不包含“AddOpenTelemetryTracing”的定义

Ole*_*leg 6 asp.net-core open-telemetry

我正在开发 NET 6 Web 服务。将所有 nuget 软件包更新到最新版本后,我收到了错误

“IServiceCollection”不包含“AddOpenTelemetryTracing”的定义,并且找不到接受“IServiceCollection”类型的第一个参数的可访问扩展方法“AddOpenTelemetryTracing”

这里

builder.Services
    .AddOpenTelemetryTracing((builder) => builder
        // Configure the resource attribute `service.name` to MyServiceName
        .SetResourceBuilder(ResourceBuilder.CreateDefault().AddService("MyServiceName"))
        // Add tracing of the AspNetCore instrumentation library
        .AddAspNetCoreInstrumentation()
        .AddConsoleExporter()
    );
Run Code Online (Sandbox Code Playgroud)

如何修复它?

ESG*_*ESG 9

AddOpenTelemetryTracingAddOpenTelemetry在 1.4.0 中删除

OpenTelemetry.Extensions.Hosting 的预发行版本(1.4.0 之前的所有版本)包含用于配置跟踪和指标的信号特定方法:

AddOpenTelemetryTracing:配置 OpenTelemetry 并注册 IHostedService 以自动启动提供的 IServiceCollection 中的跟踪服务。

AddOpenTelemetryMetrics:配置 OpenTelemetry 并注册 IHostedService 以自动启动提供的 IServiceCollection 中的指标服务。

这些方法被标记为过时,后来被删除。您应该将代码迁移到上面记录的新 AddOpenTelemetry 方法。请参阅示例应用程序的旧版本和新版本来帮助您进行迁移。

来源: https: //github.com/open-telemetry/opentelemetry-dotnet/blob/main/src/OpenTelemetry.Extensions.Hosting/CHANGELOG.md#140