EXTOBS0001:IResourceMonitor 已过时

从 .NET 9 开始, Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceMonitor 接口和相关 API 已过时。 这些 API 将在将来的版本中删除。 资源监视功能已替换为使用可观测仪器的基于指标的更高效的方法。

以下 API 标记为已过时。 使用这些 API 会在编译时生成警告 EXTOBS0001

解决方法

改用具有可观测仪器的资源监视指标,而不是使用 IResourceMonitor。 基于指标的方法提供相同的资源利用率信息(CPU、内存),但与 OpenTelemetry 等现代可观测性系统集成得更好。

迁移示例

使用IResourceMonitor的旧方法:

services.AddResourceMonitoring();

// Inject and use IResourceMonitor
public class MyService
{
    private readonly IResourceMonitor _resourceMonitor;

    public MyService(IResourceMonitor resourceMonitor)
    {
        _resourceMonitor = resourceMonitor;
    }

    public void CheckResources()
    {
        var utilization = _resourceMonitor.GetUtilization(TimeSpan.FromSeconds(1));
        Console.WriteLine($"CPU: {utilization.CpuUsedPercentage}%");
        Console.WriteLine($"Memory: {utilization.MemoryUsedPercentage}%");
    }
}

使用指标的新方法:

services.AddResourceMonitoring();

// Configure metrics collection.
services.AddOpenTelemetry()
    .WithMetrics(builder =>
    {
        builder.AddMeter("Microsoft.Extensions.Diagnostics.ResourceMonitoring");
        builder.AddConsoleExporter();
    });

资源监视指标会自动发布,可由任何与 OpenTelemetry 兼容的指标管道使用。 有关详细信息,请参阅 Microsoft.Extensions.Diagnostics.ResourceMonitoring 指标

禁止显示警告

如果必须使用过时的 API,可以在代码或项目文件中禁止显示警告。

若要仅取消单个冲突,请将预处理器指令添加到源文件以禁用,然后重新启用警告。

// Disable the warning.
#pragma warning disable EXTOBS0001

// Code that uses obsolete API.
// ...

// Re-enable the warning.
#pragma warning restore EXTOBS0001

若要取消项目中的所有 EXTOBS0001 警告,请将属性 <NoWarn> 添加到项目文件。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
   ...
   <NoWarn>$(NoWarn);EXTOBS0001</NoWarn>
  </PropertyGroup>
</Project>

有关详细信息,请参阅 禁止显示警告

另请参阅