Error Knowledge Base NuGet NU1106

NU1106: Unable to satisfy conflicting package version requests

NuGet could not choose one package version because the dependency graph contains incompatible version ranges that cannot be satisfied together.

Fix it fast

Most likely: Two dependency paths require version ranges that do not overlap, so NuGet cannot select one version that satisfies every request.

1. Confirm this is your error
error NU1106: Unable to satisfy conflicting requests for 'PackageId': ... Framework: ...
2. Check the cause
dotnet restore -v normal
dotnet list package --include-transitive
grep -R "<TargetFramework\|<TargetFrameworks\|<PackageReference\|<PackageVersion" -n *.csproj Directory.Packages.props
3. Apply the safe fix
# Use the NU1106 output to find the package paths imposing incompatible ranges.
# Then upgrade/downgrade the parent packages so their constraints overlap, or add a direct compatible reference.
dotnet restore -v minimal
dotnet build
4. Verify it works
dotnet restore
dotnet build
Don't use unsafe shortcuts
  • Do not pin a version outside one dependency's allowed range just to silence restore.
  • Do not check only one target framework when the conflict appears in a multi-targeted project.
  • Do not update one package from a related family while leaving dependent packages on incompatible versions.

What Broke in the Dependency Graph

This is NuGet refusing to continue with a dependency graph that does not make sense. The important detail is which versions or peer requirements disagree, not just the final error code.

Repair the dependency graph

Use the conflict paths in the NU1106 output to identify the packages imposing constraints.

Upgrade or downgrade parent packages so constraints overlap, or add an explicit reference to choose a compatible version.

Restore again:dotnet restore -v minimal

Why Resolution Broke

Usually this comes down to two packages require non-overlapping version ranges of the same dependency, a direct reference pins a version that conflicts with transitive constraints, or a conflict occurs only under one TargetFramework in a multi-target build.

Prove the Graph Is Clean Again

dotnet restore succeeds across all TFMs without NU1106, and dotnet build succeeds without follow-on restore or build errors.

Validation

Re-run the failing command and confirm the original code/message is gone, and confirm expected artifacts or outputs exist (packages restored, build/publish succeeds).

Mechanism

NuGet merges dependency version ranges across direct and transitive references. If the merged constraints are mutually incompatible, restore fails with NU1106.

Keep the Dependency Graph Healthy

To prevent this, manage versions centrally with CPM and update package families together, and build and test all TFMs in CI to catch framework-specific conflicts.

Need help or found a mistake? Contact RepoFlow support for questions.

Join our mailing list