Skip to content

Condition framework-provided package references for .NET 11 - #7915

Merged
jeffhandley merged 1 commit into
mainfrom
jeffhandley/net11-restore-pruning
Nov 4, 2026
Merged

jeffhandley merged 1 commit into
mainfrom
jeffhandley/net11-restore-pruning

Conversation

@jeffhandley

@jeffhandley jeffhandley commented Nov 4, 2026 •

Copy link
Copy Markdown
Member

After #7912 added net11.0 targeting, restoring Telemetry.Tests with warnings treated as errors fails with NU1510 for Microsoft.Extensions.Options. .NET 11 now includes nine Microsoft.Extensions abstraction assemblies in Microsoft.NETCore.App, making their explicit package references redundant.

Condition 32 references across libraries, shared code, tests, and engineering tooling using !IsTargetFrameworkCompatible(..., 'net11.0'). This preserves existing dependencies for older targets without suppressing NU1510. Include multi-target libraries whose legacy targets mask the diagnostic, and document pruning checks for future TFM additions.

Validation

  • Reproduced the reported failure; the exact command below now succeeds with zero warnings and errors:
    .\eng\build.ps1 -restore -onlyTfms net11.0 -warnAsError:$true `
      -projects test\Libraries\Microsoft.Extensions.Telemetry.Tests\Microsoft.Extensions.Telemetry.Tests.csproj
  • Repository-wide warnings-as-errors restore succeeds for net11.0 and the full supported target matrix.
  • The affected 86-project solution compiled with warnings-as-errors across modern and legacy targets. Test reports contain 25,434 passed, 1,389 skipped, and zero failed assertions.
  • All 14 affected libraries packed with package validation enabled. Checked 170 restore-asset and 145 nuspec dependency assertions to verify net11.0 omits the redundant references while older targets retain them.

The full test command encountered an unrelated ObjectPool net472 TRX-reporting failure at a 261-character artifact path. The same 16 tests and all report formats pass with shorter output paths. DiagConfig builds without NU1510, but its standalone warnings-as-errors restore still encounters the existing NU1506 duplicate System.CommandLine entry; ordinary compilation also reports existing RT0000 and S1871 warnings.

Microsoft Reviewers: Open in CodeFlow

Retain Microsoft.Extensions package dependencies for older targets while avoiding redundant references and NU1510 on net11.0. Document pruning checks for future target framework additions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
@jeffhandley
jeffhandley requested review from a team as code owners November 4, 2026 00:27
Copilot AI balanced review requested due to automatic review settings November 4, 2026 00:27
@github-actions github-actions Bot added the area-ai Microsoft.Extensions.AI libraries label Nov 4, 2026

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟒 Approval recommended

No active review issues are reported for the .NET 11 package-reference conditioning changes.

No open issues πŸŽ‰

What changed in this PR

Following the .NET 11 targeting added in #7912, this PR conditions redundant framework-provided package references to avoid NU1510 restore warnings while preserving dependencies for older targets.

Changes:

  • Adds .NET 11 compatibility conditions to 32 package references across libraries, shared code, tests, and engineering tooling.
  • Preserves existing package references for older target frameworks without suppressing warnings.
  • Documents package-pruning checks for future target-framework additions.
File Description
test/​Libraries/​Microsoft.Extensions.Telemetry.Tests/​Microsoft.Extensions.Telemetry.Tests.csproj Conditions the Options reference.
test/​Libraries/​Microsoft.Extensions.Resilience.Tests/​Microsoft.Extensions.Resilience.Tests.csproj Conditions DependencyInjection.Abstractions.
test/​Libraries/​Microsoft.Extensions.AI.Integration.Tests/​Microsoft.Extensions.AI.Integration.Tests.csproj Conditions the Options reference.
src/​Shared/​Shared.csproj Conditions dependency injection and logging abstractions.
src/​Libraries/​Microsoft.Extensions.Telemetry.Abstractions/​Microsoft.Extensions.Telemetry.Abstractions.csproj Conditions Options and logging abstractions.
src/​Libraries/​Microsoft.Extensions.ServiceDiscovery.Dns/​Microsoft.Extensions.ServiceDiscovery.Dns.csproj Conditions four framework-provided references.
src/​Libraries/​Microsoft.Extensions.ServiceDiscovery.Abstractions/​Microsoft.Extensions.ServiceDiscovery.Abstractions.csproj Conditions five framework-provided references.
src/​Libraries/​Microsoft.Extensions.Options.Contextual/​Microsoft.Extensions.Options.Contextual.csproj Conditions the Options reference.
src/​Libraries/​Microsoft.Extensions.ObjectPool.DependencyInjection/​Microsoft.Extensions.ObjectPool.DependencyInjection.csproj Conditions the Options reference.
src/​Libraries/​Microsoft.Extensions.Diagnostics.ExceptionSummarization/​Microsoft.Extensions.Diagnostics.ExceptionSummarization.csproj Conditions DependencyInjection.Abstractions.
src/​Libraries/​Microsoft.Extensions.DependencyInjection.AutoActivation/​Microsoft.Extensions.DependencyInjection.AutoActivation.csproj Conditions Hosting.Abstractions.
src/​Libraries/​Microsoft.Extensions.DataIngestion/​Microsoft.Extensions.DataIngestion.csproj Conditions Logging.Abstractions.
src/​Libraries/​Microsoft.Extensions.Compliance.Abstractions/​Microsoft.Extensions.Compliance.Abstractions.csproj Conditions DependencyInjection.Abstractions.
src/​Libraries/​Microsoft.Extensions.Caching.Hybrid/​Microsoft.Extensions.Caching.Hybrid.csproj Conditions caching, logging, and Options references.
src/​Libraries/​Microsoft.Extensions.AsyncState/​Microsoft.Extensions.AsyncState.csproj Conditions DependencyInjection.Abstractions.
src/​Libraries/​Microsoft.Extensions.AmbientMetadata.Build/​Microsoft.Extensions.AmbientMetadata.Build.csproj Conditions Hosting.Abstractions.
src/​Libraries/​Microsoft.Extensions.AmbientMetadata.Application/​Microsoft.Extensions.AmbientMetadata.Application.csproj Conditions Hosting.Abstractions.
src/​Libraries/​Microsoft.Extensions.AI/​Microsoft.Extensions.AI.csproj Conditions caching, dependency injection, and logging abstractions.
eng/​Tools/​DiagConfig/​DiagConfig.csproj Conditions Logging.Abstractions for the engineering tool.
docs/​adding-a-target-framework.md Documents framework-provided package checks and conditional references.

Review effort: Balanced

@tarekgh tarekgh left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

LGTM!

@dotnet-comment-bot

Copy link
Copy Markdown
Collaborator

‼️ Found issues ‼️

Project Coverage Type Expected Actual
Microsoft.Extensions.AI Line 89 87.81 πŸ”»
Microsoft.Extensions.AI Branch 89 79.23 πŸ”»
Microsoft.Extensions.AI.OpenAI Line 75 68.8 πŸ”»
Microsoft.Extensions.AI.OpenAI Branch 75 60.3 πŸ”»
Microsoft.Extensions.DataIngestion.MarkItDown Line 75 4.46 πŸ”»
Microsoft.Extensions.DataIngestion.MarkItDown Branch 75 0.75 πŸ”»
Microsoft.Extensions.Diagnostics.ResourceMonitoring Line 99 96.06 πŸ”»
Microsoft.Extensions.Diagnostics.ResourceMonitoring Branch 99 92.28 πŸ”»
Microsoft.Extensions.Diagnostics.ResourceMonitoring.Kubernetes Line 99 97.73 πŸ”»
Microsoft.Extensions.Diagnostics.ResourceMonitoring.Kubernetes Branch 99 92.86 πŸ”»
Microsoft.Extensions.Diagnostics.Testing Line 99 98.22 πŸ”»
Microsoft.Extensions.Diagnostics.Testing Branch 99 93.66 πŸ”»
Microsoft.Extensions.ServiceDiscovery Line 75 58.78 πŸ”»
Microsoft.Extensions.ServiceDiscovery Branch 75 64.41 πŸ”»
Microsoft.Extensions.ServiceDiscovery.Abstractions Line 75 41.14 πŸ”»
Microsoft.Extensions.ServiceDiscovery.Abstractions Branch 75 45.1 πŸ”»
Microsoft.Extensions.ServiceDiscovery.Dns Line 75 62.53 πŸ”»
Microsoft.Extensions.ServiceDiscovery.Dns Branch 75 73.96 πŸ”»
Microsoft.Extensions.ServiceDiscovery.Yarp Line 75 73.85 πŸ”»
Microsoft.Extensions.ServiceDiscovery.Yarp Branch 75 60 πŸ”»
Microsoft.Extensions.Telemetry Line 93 90.47 πŸ”»
Microsoft.Extensions.Telemetry Branch 93 86.83 πŸ”»
Microsoft.Extensions.VectorData.Abstractions Line 75 32.15 πŸ”»
Microsoft.Extensions.VectorData.Abstractions Branch 75 26.31 πŸ”»

πŸŽ‰ Good job! The coverage increased πŸŽ‰
Update MinCodeCoverage in the project files.

Project Expected Actual
Microsoft.Extensions.AI.Evaluation.NLP 0 74
Microsoft.Extensions.DataIngestion 75 77
Microsoft.Extensions.DataIngestion.Markdig 75 88
Microsoft.Extensions.Http.Resilience 97 99
Microsoft.Gen.MetadataExtractor 57 72
Microsoft.Gen.MetricsReports 67 69

Full code coverage report: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1662848&view=codecoverage-tab

@jeffhandley
jeffhandley merged commit bb87f5b into main Nov 4, 2026
8 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area-ai Microsoft.Extensions.AI libraries

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants