Description
When referencing Microsoft.SemanticKernel.Abstractions 1.53.0
, several transitive dependency conflicts occur due to inconsistent version requirements between the package itself and its dependency on Microsoft.Extensions.AI 9.5.0
. This leads to package downgrade warnings during restore/build, and breaks builds.
Warnings:
Warning As Error: Detected package downgrade: Microsoft.Extensions.DependencyInjection.Abstractions from 9.0.5 to 8.0.2.
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> Microsoft.Extensions.AI 9.5.0 -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 9.0.5)
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
Warning As Error: Detected package downgrade: Microsoft.Extensions.Logging.Abstractions from 9.0.5 to 8.0.3.
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> Microsoft.Extensions.AI 9.5.0 -> Microsoft.Extensions.Logging.Abstractions (>= 9.0.5)
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> Microsoft.Extensions.Logging.Abstractions (>= 8.0.3)
Warning As Error: Detected package downgrade: System.Diagnostics.DiagnosticSource from 9.0.5 to 8.0.1.
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> Microsoft.Extensions.AI 9.5.0 -> System.Diagnostics.DiagnosticSource (>= 9.0.5)
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> System.Diagnostics.DiagnosticSource (>= 8.0.1)
Warning As Error: Detected package downgrade: System.Text.Json from 9.0.5 to 8.0.5.
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> Microsoft.Extensions.AI 9.5.0 -> System.Text.Json (>= 9.0.5)
<package> -> Microsoft.SemanticKernel.Abstractions 1.53.0 -> System.Text.Json (>= 8.0.5)
Cause:
Microsoft.SemanticKernel.Abstractions
1.53.0 references older versions (8.x) of several core libraries while simultaneously referencing Microsoft.Extensions.AI 9.5.0
, which requires 9.x versions of the same libraries — causing NuGet to emit downgrade warnings.
Expected Behavior:
Version requirements for transitive dependencies should be consistent to prevent downgrade warnings and allow consumer projects to build cleanly without having to manually pin dependencies or suppress warnings.
Surprised this wasn’t caught during publish; these downgrade conflicts are typically surfaced during CI or package validation.