Bump Microsoft.Extensions.DependencyInjection.Abstractions to 9.0.1 (fixes azure-functions-durable-extension#3433)#723
Merged
YunchuWang merged 1 commit intomicrosoft:mainfrom May 7, 2026
Conversation
Contributor
There was a problem hiding this comment.
Pull request overview
Updates central package versions to avoid downstream NuGet downgrade errors (NU1605) when Microsoft.DurableTask.Extensions.AzureBlobPayloads is consumed in Azure Functions Worker isolated apps, aligning with newer dependency floors brought in via WebJobs/Logging abstractions.
Changes:
- Bump
Microsoft.Extensions.DependencyInjection.Abstractionsfrom 8.0.2 to 9.0.1. - Bump
Microsoft.Bcl.AsyncInterfacesfrom 8.0.0 to 9.0.1 to prevent cascading downgrade conflicts. - Update the central-package-management comment and add an Unreleased changelog entry.
Reviewed changes
Copilot reviewed 2 out of 2 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| Directory.Packages.props | Updates centrally managed package versions and revises the rationale comment for Functions-host compatibility/NU1605 avoidance. |
| CHANGELOG.md | Adds an Unreleased entry describing the package-floor alignment for downstream consumers. |
20d23f8 to
eb2612a
Compare
eb2612a to
05f666f
Compare
Resolves NU1605 in downstream Azure Functions Worker isolated apps that consume Microsoft.DurableTask.Extensions.AzureBlobPayloads via Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged. Microsoft.Azure.WebJobs 3.0.45 -> Microsoft.Extensions.Logging.Abstractions 9.0.1 transitively floors Microsoft.Extensions.DependencyInjection.Abstractions at >= 9.0.1, while AzureBlobPayloads previously pinned it to 8.0.2. Auto-generated WorkerExtensions.csproj resolved 8.0.2 by 'nearest wins', triggering NU1605. The original 8.x pin (PR microsoft#698) was correct when the Functions host targeted net8.0 and could only provide 8.x shared-framework assemblies. As of azure-functions-host v4.1049.x the host targets net10.0 and ships 9.x/10.x via runtimeassemblies-relaxed.json, so this pin is no longer necessary. Bumping DI.Abstractions to 9.0.1 transitively floors Microsoft.Bcl.AsyncInterfaces at >= 9.0.1, so that package is bumped together. Fixes Azure/azure-functions-durable-extension#3433 Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> Signed-off-by: Bill Wang <wangbill@microsoft.com>
05f666f to
0f336bd
Compare
Comment on lines
10
to
+16
| <!-- Microsoft.Extensions.* Packages | ||
| IMPORTANT: These assemblies are part of the .NET shared framework and load into the | ||
| Azure Functions host process, which runs on net8.0. Package versions MUST stay at 8.x | ||
| so the assembly versions (8.0.0.0) match what the host provides. Using 10.x causes | ||
| FileNotFoundException at runtime because the host cannot satisfy Version=10.0.0.0. | ||
| DO NOT upgrade to 10.x+ until the Azure Functions host itself targets .NET 10. | ||
| See: https://github.com/Azure/azure-functions-host (WebJobs.Script.csproj -> net8.0) --> | ||
| Azure Functions host process. Historically the host ran on net8.0 and required the | ||
| package versions to stay at 8.x so the assembly versions (8.0.0.0) matched what the | ||
| host provided; using 10.x caused FileNotFoundException at runtime. | ||
| As of azure-functions-host v4.1049.x the host targets net10.0 and ships 9.x/10.x | ||
| shared-framework assemblies via runtimeassemblies-relaxed.json (minorMatchOrLower), |
| # Changelog | ||
|
|
||
| ## Unreleased | ||
| - Bump `Microsoft.Extensions.DependencyInjection.Abstractions` from 8.0.2 to 9.0.1 (and `Microsoft.Bcl.AsyncInterfaces` from 8.0.0 to 9.0.1, which the former transitively floors at 9.0.1) to align with the floor declared by `Microsoft.Azure.WebJobs 3.0.45 -> Microsoft.Extensions.Logging.Abstractions 9.0.1`. Fixes NU1605 in downstream Azure Functions Worker isolated apps consuming `Microsoft.DurableTask.Extensions.AzureBlobPayloads` ([Azure/azure-functions-durable-extension#3433](https://github.com/Azure/azure-functions-durable-extension/issues/3433)). |
kaibocai
approved these changes
May 7, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Fixes Azure/azure-functions-durable-extension#3433: downstream Azure Functions Worker isolated apps consuming
Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManaged(which transitively pulls inMicrosoft.DurableTask.Extensions.AzureBlobPayloads) hitNU1605on the auto-generatedWorkerExtensions.csproj.Root cause
Microsoft.Azure.WebJobs 3.0.45→Microsoft.Extensions.Logging.Abstractions 9.0.1transitively floorsMicrosoft.Extensions.DependencyInjection.Abstractionsat >= 9.0.1.Microsoft.DurableTask.Extensions.AzureBlobPayloads(1.23.x / 1.24.x) directly pinnedDependencyInjection.Abstractions = 8.0.2.WorkerExtensions.csproj, then warns/errors that 8.0.2 was selected over 9.0.1 →NU1605.Why the original pin no longer applies
The 8.x pin landed in #698 because the Azure Functions host then targeted
net8.0and could only resolve 8.x shared-framework assemblies. As ofazure-functions-hostv4.1049.x the host targetsnet10.0and ships 9.x/10.x viaruntimeassemblies-relaxed.json, so the pin is now stale.Changes
Microsoft.Extensions.DependencyInjection.Abstractions8.0.2 → 9.0.1Microsoft.Bcl.AsyncInterfaces8.0.0 → 9.0.1 (DI.Abstractions 9.0.1 transitively floorsBcl.AsyncInterfacesat 9.0.1, so this is required to avoid a cascading NU1605)Directory.Packages.propsto reflect the host's net10.0 transitionCHANGELOG.mdentry under UnreleasedValidation
dotnet buildof all packable projects: ✅ succeeds (only pre-existing StyleCop warnings)AzureBlobPayloads.1.24.2-pre.fix3433.nupkgnuspec confirmsDependencyInjection.Abstractions >= 9.0.1direct dependency.Microsoft.Azure.Functions.Worker.Extensions.DurableTask.AzureManagedSDK against the locally-packed prereleases and aDotNetIsolatedSmokeTestthat triggered the original NU1605:Build succeeded. 0 Warning(s) 0 Error(s).Related
DI.Abstractions = 9.0.1reference inWebJobs.Extensions.DurableTask.AzureManaged.csproj). It can stay or be reverted once a release containing this fix ships.