From c23b1d153c76c8a90534192268fc0231659b8872 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 5 May 2026 19:05:15 +0000
Subject: [PATCH 1/6] Initial plan
From bc6b851c87c6c7cd2a679f133b772515ee2bb3ce Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 5 May 2026 19:08:21 +0000
Subject: [PATCH 2/6] Add breaking change article: Microsoft.Extensions.*
packages in shared framework (.NET 11)
Agent-Logs-Url: https://github.com/dotnet/docs/sessions/e8635257-475f-450d-8351-50107ec8c6e1
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
---
docs/core/compatibility/11.md | 1 +
.../11/extensions-in-shared-framework.md | 95 +++++++++++++++++++
docs/core/compatibility/toc.yml | 2 +
3 files changed, 98 insertions(+)
create mode 100644 docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
diff --git a/docs/core/compatibility/11.md b/docs/core/compatibility/11.md
index ca571c2399bf6..70670a3a9e139 100644
--- a/docs/core/compatibility/11.md
+++ b/docs/core/compatibility/11.md
@@ -52,6 +52,7 @@ See [Breaking changes in EF Core 11](/ef/core/what-is-new/ef-core-11.0/breaking-
| Title | Type of change |
|-------|-------------------|
| [IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails](extensions/11/ihost-runasync-stopasync-throw-backgroundservice-failure.md) | Behavioral change |
+| [Microsoft.Extensions.* packages included in shared framework](extensions/11/extensions-in-shared-framework.md) | Behavioral change |
## Globalization
diff --git a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
new file mode 100644
index 0000000000000..ec8bc07b03758
--- /dev/null
+++ b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
@@ -0,0 +1,95 @@
+---
+title: "Breaking change: Microsoft.Extensions.* packages included in shared framework"
+description: "Learn about the breaking change in .NET 11 where nine Microsoft.Extensions.* libraries are now part of the base shared framework."
+ms.date: 05/05/2026
+ai-usage: ai-assisted
+---
+
+# Microsoft.Extensions.* packages included in shared framework
+
+Starting in .NET 11, nine `Microsoft.Extensions.*` libraries are included in the .NET base shared framework. Projects that explicitly reference these packages receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510). You can resolve the warning by removing the `PackageReference`. If you depend on an older version of these packages, upgrading to the .NET 11 version might expose previously undocumented breaking changes introduced between older versions and .NET 11.
+
+## Version introduced
+
+.NET 11 Preview 4
+
+## Previous behavior
+
+Previously, the following `Microsoft.Extensions.*` libraries weren't part of the .NET base shared framework. Projects that needed them required explicit `PackageReference` entries, and the assemblies were copied to the output folder:
+
+- `Microsoft.Extensions.Caching.Abstractions`
+- `Microsoft.Extensions.Configuration.Abstractions`
+- `Microsoft.Extensions.DependencyInjection.Abstractions`
+- `Microsoft.Extensions.Diagnostics.Abstractions`
+- `Microsoft.Extensions.FileProviders.Abstractions`
+- `Microsoft.Extensions.Hosting.Abstractions`
+- `Microsoft.Extensions.Logging.Abstractions`
+- `Microsoft.Extensions.Options`
+- `Microsoft.Extensions.Primitives`
+
+## New behavior
+
+Starting in .NET 11, these nine libraries are part of the .NET base shared framework:
+
+- You don't need a `PackageReference` for these libraries when you target `net11.0` or later.
+- If you reference these packages explicitly, you receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510).
+- To resolve NU1510, remove the `PackageReference`. The library is always available through the framework.
+- These assemblies are no longer copied to the output folder.
+- In rare cases, the additional APIs in the default load set might cause name or type conflicts. To resolve a conflict, add more explicit `using` directives, use an alias, or use a fully qualified type name.
+- When you target multiple frameworks (for example, `net10.0;net11.0`), the upgrade to the .NET 11 version of these libraries on the `net11.0` TFM is silent—NU1510 isn't produced in that case.
+
+## Type of breaking change
+
+This change is a [behavioral change](../../categories.md#behavioral-change).
+
+## Reason for change
+
+Including these commonly used libraries in the shared framework reduces application size, simplifies package dependencies, and streamlines servicing.
+
+## Recommended action
+
+**Remove the PackageReference for any affected package:**
+
+```xml
+
+
+
+```
+
+Your code continues to work without modification—the APIs are now part of the runtime.
+
+**Resolve compile-time name conflicts (rare):**
+
+If you encounter a compile error because a name in your code conflicts with one of the newly included APIs, use one of these approaches:
+
+- Add a more specific `using` directive.
+- Use a `using` alias.
+- Use a fully qualified type name.
+
+**If you depend on an older version of these packages:**
+
+Binaries compiled against very old versions of these packages might fail at runtime with `MissingMethodException` or `TypeLoadException`. To resolve the issue, update the package references in your project to the current version and recompile.
+
+The following breaking changes from previous versions might surface when upgrading to the .NET 11 versions of these packages:
+
+*Microsoft.Extensions.DependencyInjection.Abstractions*
+
+- [ActivatorUtilities.CreateInstance behaves consistently](../8.0/activatorutilities-createinstance-behavior.md)
+- [ActivatorUtilities.CreateInstance requires non-null provider](../8.0/activatorutilities-createinstance-null-provider.md)
+- [FromKeyedServicesAttribute.Key property nullable](../8.0/fromkeyedservicesattribute-key-nullable.md)
+- [Non-keyed service used when keyed not found](../../core-libraries/9.0/non-keyed-params.md)
+- [GetKeyedService and GetKeyedServices with AnyKey](../10.0/getkeyedservice-anykey.md)
+
+*Microsoft.Extensions.Logging.Abstractions*
+
+- [ProviderAliasAttribute moved assembly](../10.0/provideraliasattribute-moved-assembly.md)
+
+*Microsoft.Extensions.Hosting.Abstractions*
+
+- [Unhandled exceptions from a BackgroundService](../../core-libraries/6.0/hosting-exception-handling.md)
+- [BackgroundService runs all of ExecuteAsync as a Task](../10.0/backgroundservice-executeasync-task.md)
+- [IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails](ihost-runasync-stopasync-throw-backgroundservice-failure.md)
+
+## Affected APIs
+
+None.
diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml
index 327c0135cd2f8..64958e59787a2 100644
--- a/docs/core/compatibility/toc.yml
+++ b/docs/core/compatibility/toc.yml
@@ -38,6 +38,8 @@ items:
items:
- name: IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails
href: extensions/11/ihost-runasync-stopasync-throw-backgroundservice-failure.md
+ - name: Microsoft.Extensions.* packages included in shared framework
+ href: extensions/11/extensions-in-shared-framework.md
- name: Globalization
items:
- name: Japanese Calendar minimum supported date corrected
From b042f5d34468d87ff5871e55409d83c2675224ae Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 5 May 2026 19:09:34 +0000
Subject: [PATCH 3/6] Address code review feedback: style improvements to
breaking change article
Agent-Logs-Url: https://github.com/dotnet/docs/sessions/e8635257-475f-450d-8351-50107ec8c6e1
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
---
.../extensions/11/extensions-in-shared-framework.md | 8 ++++----
1 file changed, 4 insertions(+), 4 deletions(-)
diff --git a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
index ec8bc07b03758..cb280e9c493ad 100644
--- a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
+++ b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
@@ -7,7 +7,7 @@ ai-usage: ai-assisted
# Microsoft.Extensions.* packages included in shared framework
-Starting in .NET 11, nine `Microsoft.Extensions.*` libraries are included in the .NET base shared framework. Projects that explicitly reference these packages receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510). You can resolve the warning by removing the `PackageReference`. If you depend on an older version of these packages, upgrading to the .NET 11 version might expose previously undocumented breaking changes introduced between older versions and .NET 11.
+To reduce application size, simplify package dependencies, and streamline servicing, .NET 11 includes nine `Microsoft.Extensions.*` libraries in the base shared framework. Projects that explicitly reference these packages receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510). You can resolve the warning by removing the `PackageReference`. If you depend on an older version of these packages, upgrading to the .NET 11 version might expose previously undocumented breaking changes introduced between older versions and .NET 11.
## Version introduced
@@ -15,7 +15,7 @@ Starting in .NET 11, nine `Microsoft.Extensions.*` libraries are included in the
## Previous behavior
-Previously, the following `Microsoft.Extensions.*` libraries weren't part of the .NET base shared framework. Projects that needed them required explicit `PackageReference` entries, and the assemblies were copied to the output folder:
+Previously, the following `Microsoft.Extensions.*` libraries weren't part of the .NET base shared framework. Projects that needed them required explicit `PackageReference` entries, and the build process copied the assemblies to the output folder:
- `Microsoft.Extensions.Caching.Abstractions`
- `Microsoft.Extensions.Configuration.Abstractions`
@@ -48,7 +48,7 @@ Including these commonly used libraries in the shared framework reduces applicat
## Recommended action
-**Remove the PackageReference for any affected package:**
+**Remove the `PackageReference` for any affected package:**
```xml
@@ -68,7 +68,7 @@ If you encounter a compile error because a name in your code conflicts with one
**If you depend on an older version of these packages:**
-Binaries compiled against very old versions of these packages might fail at runtime with `MissingMethodException` or `TypeLoadException`. To resolve the issue, update the package references in your project to the current version and recompile.
+To avoid runtime failures like `MissingMethodException` or `TypeLoadException`, update binaries compiled against very old versions of these packages by updating the package references in your project to the current version and recompiling.
The following breaking changes from previous versions might surface when upgrading to the .NET 11 versions of these packages:
From e0598fadedd461b2bdb43e451b850676166c8f7e Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Tue, 5 May 2026 12:25:57 -0700
Subject: [PATCH 4/6] Apply suggestions from code review
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
---
docs/core/compatibility/11.md | 2 +-
.../extensions/11/extensions-in-shared-framework.md | 6 +++---
docs/core/compatibility/toc.yml | 2 +-
3 files changed, 5 insertions(+), 5 deletions(-)
diff --git a/docs/core/compatibility/11.md b/docs/core/compatibility/11.md
index 70670a3a9e139..33a8954072c28 100644
--- a/docs/core/compatibility/11.md
+++ b/docs/core/compatibility/11.md
@@ -52,7 +52,7 @@ See [Breaking changes in EF Core 11](/ef/core/what-is-new/ef-core-11.0/breaking-
| Title | Type of change |
|-------|-------------------|
| [IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails](extensions/11/ihost-runasync-stopasync-throw-backgroundservice-failure.md) | Behavioral change |
-| [Microsoft.Extensions.* packages included in shared framework](extensions/11/extensions-in-shared-framework.md) | Behavioral change |
+| [Some Microsoft.Extensions packages included in shared framework](extensions/11/extensions-in-shared-framework.md) | Behavioral change |
## Globalization
diff --git a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
index cb280e9c493ad..43d7bc1ba6600 100644
--- a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
+++ b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
@@ -5,7 +5,7 @@ ms.date: 05/05/2026
ai-usage: ai-assisted
---
-# Microsoft.Extensions.* packages included in shared framework
+# Some Microsoft.Extensions packages included in shared framework
To reduce application size, simplify package dependencies, and streamline servicing, .NET 11 includes nine `Microsoft.Extensions.*` libraries in the base shared framework. Projects that explicitly reference these packages receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510). You can resolve the warning by removing the `PackageReference`. If you depend on an older version of these packages, upgrading to the .NET 11 version might expose previously undocumented breaking changes introduced between older versions and .NET 11.
@@ -35,7 +35,7 @@ Starting in .NET 11, these nine libraries are part of the .NET base shared frame
- If you reference these packages explicitly, you receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510).
- To resolve NU1510, remove the `PackageReference`. The library is always available through the framework.
- These assemblies are no longer copied to the output folder.
-- In rare cases, the additional APIs in the default load set might cause name or type conflicts. To resolve a conflict, add more explicit `using` directives, use an alias, or use a fully qualified type name.
+- In rare cases, the additional APIs in the framework-provided reference assemblies available when you target `net11.0` might cause compile-time name or type resolution conflicts. To resolve a conflict, add more explicit `using` directives, use an alias, or use a fully qualified type name.
- When you target multiple frameworks (for example, `net10.0;net11.0`), the upgrade to the .NET 11 version of these libraries on the `net11.0` TFM is silent—NU1510 isn't produced in that case.
## Type of breaking change
@@ -68,7 +68,7 @@ If you encounter a compile error because a name in your code conflicts with one
**If you depend on an older version of these packages:**
-To avoid runtime failures like `MissingMethodException` or `TypeLoadException`, update binaries compiled against very old versions of these packages by updating the package references in your project to the current version and recompiling.
+To avoid runtime failures like `MissingMethodException` or `TypeLoadException`, recompile any dependent libraries or binaries against the .NET 11 reference assemblies. If you target `net11.0`, remove the `PackageReference` and rebuild. If you target earlier TFMs or multi-target, update the package references for the non-`net11.0` targets to the current version, and then recompile.
The following breaking changes from previous versions might surface when upgrading to the .NET 11 versions of these packages:
diff --git a/docs/core/compatibility/toc.yml b/docs/core/compatibility/toc.yml
index 64958e59787a2..d565835c89701 100644
--- a/docs/core/compatibility/toc.yml
+++ b/docs/core/compatibility/toc.yml
@@ -38,7 +38,7 @@ items:
items:
- name: IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails
href: extensions/11/ihost-runasync-stopasync-throw-backgroundservice-failure.md
- - name: Microsoft.Extensions.* packages included in shared framework
+ - name: Some Microsoft.Extensions packages included in shared framework
href: extensions/11/extensions-in-shared-framework.md
- name: Globalization
items:
From 36fd9c63ecced64a345a9ba2df0170b56902b047 Mon Sep 17 00:00:00 2001
From: Genevieve Warren <24882762+gewarren@users.noreply.github.com>
Date: Tue, 5 May 2026 12:28:22 -0700
Subject: [PATCH 5/6] Update
docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
---
.../11/extensions-in-shared-framework.md | 186 +++++++++---------
1 file changed, 92 insertions(+), 94 deletions(-)
diff --git a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
index 43d7bc1ba6600..2c9645506f918 100644
--- a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
+++ b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
@@ -1,95 +1,93 @@
----
-title: "Breaking change: Microsoft.Extensions.* packages included in shared framework"
-description: "Learn about the breaking change in .NET 11 where nine Microsoft.Extensions.* libraries are now part of the base shared framework."
-ms.date: 05/05/2026
-ai-usage: ai-assisted
----
-
+---
+title: "Breaking change: Microsoft.Extensions.* packages included in shared framework"
+description: "Learn about the breaking change in .NET 11 where nine Microsoft.Extensions.* libraries are now part of the base shared framework."
+ms.date: 05/05/2026
+ai-usage: ai-assisted
+---
+
# Some Microsoft.Extensions packages included in shared framework
-
-To reduce application size, simplify package dependencies, and streamline servicing, .NET 11 includes nine `Microsoft.Extensions.*` libraries in the base shared framework. Projects that explicitly reference these packages receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510). You can resolve the warning by removing the `PackageReference`. If you depend on an older version of these packages, upgrading to the .NET 11 version might expose previously undocumented breaking changes introduced between older versions and .NET 11.
-
-## Version introduced
-
-.NET 11 Preview 4
-
-## Previous behavior
-
-Previously, the following `Microsoft.Extensions.*` libraries weren't part of the .NET base shared framework. Projects that needed them required explicit `PackageReference` entries, and the build process copied the assemblies to the output folder:
-
-- `Microsoft.Extensions.Caching.Abstractions`
-- `Microsoft.Extensions.Configuration.Abstractions`
-- `Microsoft.Extensions.DependencyInjection.Abstractions`
-- `Microsoft.Extensions.Diagnostics.Abstractions`
-- `Microsoft.Extensions.FileProviders.Abstractions`
-- `Microsoft.Extensions.Hosting.Abstractions`
-- `Microsoft.Extensions.Logging.Abstractions`
-- `Microsoft.Extensions.Options`
-- `Microsoft.Extensions.Primitives`
-
-## New behavior
-
-Starting in .NET 11, these nine libraries are part of the .NET base shared framework:
-
-- You don't need a `PackageReference` for these libraries when you target `net11.0` or later.
-- If you reference these packages explicitly, you receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510).
-- To resolve NU1510, remove the `PackageReference`. The library is always available through the framework.
-- These assemblies are no longer copied to the output folder.
-- In rare cases, the additional APIs in the framework-provided reference assemblies available when you target `net11.0` might cause compile-time name or type resolution conflicts. To resolve a conflict, add more explicit `using` directives, use an alias, or use a fully qualified type name.
-- When you target multiple frameworks (for example, `net10.0;net11.0`), the upgrade to the .NET 11 version of these libraries on the `net11.0` TFM is silent—NU1510 isn't produced in that case.
-
-## Type of breaking change
-
-This change is a [behavioral change](../../categories.md#behavioral-change).
-
-## Reason for change
-
-Including these commonly used libraries in the shared framework reduces application size, simplifies package dependencies, and streamlines servicing.
-
-## Recommended action
-
-**Remove the `PackageReference` for any affected package:**
-
-```xml
-
-
-
-```
-
-Your code continues to work without modification—the APIs are now part of the runtime.
-
-**Resolve compile-time name conflicts (rare):**
-
-If you encounter a compile error because a name in your code conflicts with one of the newly included APIs, use one of these approaches:
-
-- Add a more specific `using` directive.
-- Use a `using` alias.
-- Use a fully qualified type name.
-
-**If you depend on an older version of these packages:**
-
-To avoid runtime failures like `MissingMethodException` or `TypeLoadException`, recompile any dependent libraries or binaries against the .NET 11 reference assemblies. If you target `net11.0`, remove the `PackageReference` and rebuild. If you target earlier TFMs or multi-target, update the package references for the non-`net11.0` targets to the current version, and then recompile.
-
-The following breaking changes from previous versions might surface when upgrading to the .NET 11 versions of these packages:
-
-*Microsoft.Extensions.DependencyInjection.Abstractions*
-
-- [ActivatorUtilities.CreateInstance behaves consistently](../8.0/activatorutilities-createinstance-behavior.md)
-- [ActivatorUtilities.CreateInstance requires non-null provider](../8.0/activatorutilities-createinstance-null-provider.md)
-- [FromKeyedServicesAttribute.Key property nullable](../8.0/fromkeyedservicesattribute-key-nullable.md)
-- [Non-keyed service used when keyed not found](../../core-libraries/9.0/non-keyed-params.md)
-- [GetKeyedService and GetKeyedServices with AnyKey](../10.0/getkeyedservice-anykey.md)
-
-*Microsoft.Extensions.Logging.Abstractions*
-
-- [ProviderAliasAttribute moved assembly](../10.0/provideraliasattribute-moved-assembly.md)
-
-*Microsoft.Extensions.Hosting.Abstractions*
-
-- [Unhandled exceptions from a BackgroundService](../../core-libraries/6.0/hosting-exception-handling.md)
-- [BackgroundService runs all of ExecuteAsync as a Task](../10.0/backgroundservice-executeasync-task.md)
-- [IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails](ihost-runasync-stopasync-throw-backgroundservice-failure.md)
-
-## Affected APIs
-
-None.
+
+To reduce application size, simplify package dependencies, and streamline servicing, .NET 11 includes nine `Microsoft.Extensions.*` libraries in the base shared framework. Projects that explicitly reference these packages receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510). You can resolve the warning by removing the `PackageReference`. If you depend on an older version of these packages, upgrading to the .NET 11 version might expose previously undocumented breaking changes introduced between older versions and .NET 11.
+
+## Version introduced
+
+.NET 11 Preview 4
+
+## Previous behavior
+
+Previously, the following `Microsoft.Extensions.*` libraries weren't part of the .NET base shared framework. Projects that needed them required explicit `PackageReference` entries, and the build process copied the assemblies to the output folder:
+
+- `Microsoft.Extensions.Caching.Abstractions`
+- `Microsoft.Extensions.Configuration.Abstractions`
+- `Microsoft.Extensions.DependencyInjection.Abstractions`
+- `Microsoft.Extensions.Diagnostics.Abstractions`
+- `Microsoft.Extensions.FileProviders.Abstractions`
+- `Microsoft.Extensions.Hosting.Abstractions`
+- `Microsoft.Extensions.Logging.Abstractions`
+- `Microsoft.Extensions.Options`
+- `Microsoft.Extensions.Primitives`
+
+## New behavior
+
+Starting in .NET 11, these nine libraries are part of the .NET base shared framework:
+
+- You don't need a `PackageReference` for these libraries when you target `net11.0` or later.
+- If you reference these packages explicitly, you receive build warning [NU1510](/nuget/reference/errors-and-warnings/nu1510).
+- These assemblies are no longer copied to the output folder.
+- In rare cases, the additional APIs in the default load set might cause name or type conflicts. To resolve a conflict, add more explicit `using` directives, use an alias, or use a fully qualified type name.
+
+## Type of breaking change
+
+This change is a [behavioral change](../../categories.md#behavioral-change).
+
+## Reason for change
+
+Including these commonly used libraries in the shared framework reduces application size, simplifies package dependencies, and streamlines servicing.
+
+## Recommended action
+
+**Remove the `PackageReference` for any affected package:**
+
+```xml
+
+
+
+```
+
+Your code continues to work without modification—the APIs are now part of the runtime.
+
+**Resolve compile-time name conflicts (rare):**
+
+If you encounter a compile error because a name in your code conflicts with one of the newly included APIs, use one of these approaches:
+
+- Add a more specific `using` directive.
+- Use a `using` alias.
+- Use a fully qualified type name.
+
+**If you depend on an older version of these packages:**
+
+To avoid runtime failures like `MissingMethodException` or `TypeLoadException`, recompile any dependent libraries or binaries against the .NET 11 reference assemblies. If you target `net11.0`, remove the `PackageReference` and rebuild. If you target earlier TFMs or multi-target, update the package references for the non-`net11.0` targets to the current version, and then recompile.
+
+The following breaking changes from previous versions might surface when upgrading to the .NET 11 versions of these packages:
+
+*Microsoft.Extensions.DependencyInjection.Abstractions*
+
+- [ActivatorUtilities.CreateInstance behaves consistently](../8.0/activatorutilities-createinstance-behavior.md)
+- [ActivatorUtilities.CreateInstance requires non-null provider](../8.0/activatorutilities-createinstance-null-provider.md)
+- [FromKeyedServicesAttribute.Key property nullable](../8.0/fromkeyedservicesattribute-key-nullable.md)
+- [Non-keyed service used when keyed not found](../../core-libraries/9.0/non-keyed-params.md)
+- [GetKeyedService and GetKeyedServices with AnyKey](../10.0/getkeyedservice-anykey.md)
+
+*Microsoft.Extensions.Logging.Abstractions*
+
+- [ProviderAliasAttribute moved assembly](../10.0/provideraliasattribute-moved-assembly.md)
+
+*Microsoft.Extensions.Hosting.Abstractions*
+
+- [Unhandled exceptions from a BackgroundService](../../core-libraries/6.0/hosting-exception-handling.md)
+- [BackgroundService runs all of ExecuteAsync as a Task](../10.0/backgroundservice-executeasync-task.md)
+- [IHost.RunAsync and IHost.StopAsync throw when a BackgroundService fails](ihost-runasync-stopasync-throw-backgroundservice-failure.md)
+
+## Affected APIs
+
+None.
From 2074387bdea4aa7059933cb573998e28c2059df8 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Tue, 5 May 2026 19:31:04 +0000
Subject: [PATCH 6/6] Address reviewer feedback: NuGet links, front matter
title, multi-targeting guidance
Agent-Logs-Url: https://github.com/dotnet/docs/sessions/b2a02110-0ef1-4f11-be45-fec2c67a75d5
Co-authored-by: gewarren <24882762+gewarren@users.noreply.github.com>
---
.../11/extensions-in-shared-framework.md | 31 ++++++++++++-------
1 file changed, 20 insertions(+), 11 deletions(-)
diff --git a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
index 2c9645506f918..e051527193df1 100644
--- a/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
+++ b/docs/core/compatibility/extensions/11/extensions-in-shared-framework.md
@@ -1,5 +1,5 @@
---
-title: "Breaking change: Microsoft.Extensions.* packages included in shared framework"
+title: "Breaking change: Some Microsoft.Extensions packages included in shared framework"
description: "Learn about the breaking change in .NET 11 where nine Microsoft.Extensions.* libraries are now part of the base shared framework."
ms.date: 05/05/2026
ai-usage: ai-assisted
@@ -17,15 +17,15 @@ To reduce application size, simplify package dependencies, and streamline servic
Previously, the following `Microsoft.Extensions.*` libraries weren't part of the .NET base shared framework. Projects that needed them required explicit `PackageReference` entries, and the build process copied the assemblies to the output folder:
-- `Microsoft.Extensions.Caching.Abstractions`
-- `Microsoft.Extensions.Configuration.Abstractions`
-- `Microsoft.Extensions.DependencyInjection.Abstractions`
-- `Microsoft.Extensions.Diagnostics.Abstractions`
-- `Microsoft.Extensions.FileProviders.Abstractions`
-- `Microsoft.Extensions.Hosting.Abstractions`
-- `Microsoft.Extensions.Logging.Abstractions`
-- `Microsoft.Extensions.Options`
-- `Microsoft.Extensions.Primitives`
+- [Microsoft.Extensions.Caching.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Caching.Abstractions)
+- [Microsoft.Extensions.Configuration.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Configuration.Abstractions)
+- [Microsoft.Extensions.DependencyInjection.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.DependencyInjection.Abstractions)
+- [Microsoft.Extensions.Diagnostics.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Diagnostics.Abstractions)
+- [Microsoft.Extensions.FileProviders.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.FileProviders.Abstractions)
+- [Microsoft.Extensions.Hosting.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Hosting.Abstractions)
+- [Microsoft.Extensions.Logging.Abstractions](https://www.nuget.org/packages/Microsoft.Extensions.Logging.Abstractions)
+- [Microsoft.Extensions.Options](https://www.nuget.org/packages/Microsoft.Extensions.Options)
+- [Microsoft.Extensions.Primitives](https://www.nuget.org/packages/Microsoft.Extensions.Primitives)
## New behavior
@@ -48,14 +48,23 @@ Including these commonly used libraries in the shared framework reduces applicat
**Remove the `PackageReference` for any affected package:**
+For projects that target only `net11.0` or later, remove the `PackageReference` entirely:
+
```xml
-
+
```
Your code continues to work without modification—the APIs are now part of the runtime.
+For multi-targeted projects (for example, `net10.0;net11.0`), NU1510 isn't raised because the package is still required for the older TFM. No action is required—NuGet selects the appropriate assembly for each target framework automatically. If you want to be explicit, you can conditionally include the reference:
+
+```xml
+
+
+```
+
**Resolve compile-time name conflicts (rare):**
If you encounter a compile error because a name in your code conflicts with one of the newly included APIs, use one of these approaches: