Compartir a través de


EXTOBS0001: IResourceMonitor está obsoleto

La Microsoft.Extensions.Diagnostics.ResourceMonitoring.IResourceMonitor interfaz y las API relacionadas están obsoletas a partir de .NET 9. Estas API se quitarán en una versión futura. La funcionalidad de supervisión de recursos se ha reemplazado por un enfoque basado en métricas más eficaz mediante instrumentos observables.

Las SIGUIENTES API están marcadas como obsoletas. El uso de estas API genera una advertencia EXTOBS0001 en tiempo de compilación.

Soluciones alternativas

En lugar de usar IResourceMonitor, cambie al uso de métricas de supervisión de recursos con instrumentos observables. El enfoque basado en métricas proporciona la misma información de uso de recursos (CPU, memoria), pero se integra mejor con sistemas de observabilidad modernos como OpenTelemetry.

Ejemplo de migración

Enfoque antiguo mediante 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}%");
    }
}

Nuevo enfoque mediante métricas:

services.AddResourceMonitoring();

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

Las métricas de supervisión de recursos se publican automáticamente y las puede consumir cualquier canalización de métricas compatibles con OpenTelemetry. Para más información, consulte Microsoft.Extensions.Diagnostics.ResourceMonitoring métricas.

Supresión de una advertencia

Si debe usar las API obsoletas, puede suprimir la advertencia en el código o en el archivo del proyecto.

Para suprimir solo una infracción, agregue directivas de preprocesador al archivo de origen para deshabilitar y volver a habilitar la advertencia.

// Disable the warning.
#pragma warning disable EXTOBS0001

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

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

Para suprimir todas las EXTOBS0001 advertencias del proyecto, agregue una <NoWarn> propiedad al archivo del proyecto.

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

Para obtener más información, vea Suprimir advertencias.

Consulte también