Yu Chen (Partner) asked a question.

Sitefinity 15.4.8630.28 Renderer fail to start on macOS - unresolvable ISnapshotProvider from transitive ResourceMonitoring registration

Environment

 

- Package: `Progress.Sitefinity.AspNetCore` 15.4.8630.28 (also `.FormWidgets`, `.Widgets`, `Progress.Sitefinity.Renderer`, `Progress.Sitefinity.RestSdk` same version)

- Target framework: `net10.0`

- OS: macOS (Darwin 24.6.0, Apple Silicon)

- SDK: .NET 10

 

Issue

 

`WebApplicationBuilder.Build()` throws on macOS:

 

```

System.AggregateException: Some services are not able to be constructed

(Error while validating the service descriptor 'ServiceType:

Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitorService

Lifetime: Singleton ImplementationType:

Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitorService':

Unable to resolve service for type

'Microsoft.Extensions.Diagnostics.ResourceMonitoring.ISnapshotProvider'

while attempting to activate

'Microsoft.Extensions.Diagnostics.ResourceMonitoring.ResourceMonitorService'.)

at Microsoft.AspNetCore.Builder.WebApplicationBuilder.Build()

at Program.<Main>$(String[] args) in Program.cs

```

 

 

Root cause

 

`AddSitefinity()` transitively references `Microsoft.Extensions.Diagnostics.HealthChecks.ResourceUtilization`, which calls `AddResourceMonitoring()`. That extension only registers an `ISnapshotProvider` implementation on Windows (`WindowsSnapshotProvider`) or Linux (`LinuxUtilizationProvider`) — macOS has no provider, so `ResourceMonitorService` cannot be resolved.

 

Tracked upstream at [dotnet/extensions#5962](https://github.com/dotnet/extensions/issues/5962) (open since Feb 2025).

 

This blocks all local dev on macOS. Production (Azure App Service / Linux) unaffected.

 

Reproduction

 

1. Create minimal ASP.NET Core `net10.0` project on macOS.

2. Add `Progress.Sitefinity.AspNetCore` 15.4.8630.28.

3. `builder.Services.AddSitefinity();`

4. `dotnet run` → exception above.

 

Current workaround

 

Register a stub `ISnapshotProvider` before `AddSitefinity()`:

 

```csharp

if (OperatingSystem.IsMacOS())

{

#pragma warning disable EXTOBS0001

builder.Services.AddSingleton<ISnapshotProvider, NoopSnapshotProvider>();

#pragma warning restore EXTOBS0001

}

```

 

with a no-op `ISnapshotProvider` returning zeroed `Snapshot` / `SystemResources`:

 

```csharp

using Microsoft.Extensions.Diagnostics.ResourceMonitoring;

 

internal sealed class NoopSnapshotProvider : ISnapshotProvider

{

public SystemResources Resources { get; } = new(1, 1, 1, 1);

 

public Snapshot GetSnapshot() => new(

totalTimeSinceStart: TimeSpan.Zero,

kernelTimeSinceStart: TimeSpan.Zero,

userTimeSinceStart: TimeSpan.Zero,

memoryUsageInBytes: 0);

}

```

 

Functional but relies on obsolete API (`EXTOBS0001`).


  • Jonathan Read (Progress Software)

    I would recommend a support ticket. I would look into it but i don't have a Mac :/