@@ -1370,11 +1370,11 @@ await File.WriteAllTextAsync(projectPath, """
1370
1370
""" ) ;
1371
1371
await UpdateWorkerTestBase . MockNuGetPackagesInDirectory ( [
1372
1372
// initial packages
1373
- MockNuGetPackage . CreateSimplePackage ( "Microsoft.EntityFrameworkCore" , "7.0.11" , "net8.0" , [ ( null , [ ( "Microsoft.EntityFrameworkCore.Analyzers" , "7.0.11" ) , ( "Microsoft.Extensions.Caching.Memory" , "7.0.0" ) ] ) ] ) ,
1373
+ MockNuGetPackage . CreateSimplePackage ( "Microsoft.EntityFrameworkCore" , "7.0.11" , "net8.0" , [ ( null , [ ( "Microsoft.EntityFrameworkCore.Analyzers" , "7.0.11" ) , ( "Microsoft.Extensions.Caching.Memory" , "[ 7.0.0] " ) ] ) ] ) ,
1374
1374
MockNuGetPackage . CreateSimplePackage ( "Microsoft.EntityFrameworkCore.Analyzers" , "7.0.11" , "net8.0" ) ,
1375
1375
MockNuGetPackage . CreateSimplePackage ( "Microsoft.Extensions.Caching.Memory" , "7.0.0" , "net8.0" ) ,
1376
1376
// available packages
1377
- MockNuGetPackage . CreateSimplePackage ( "Microsoft.EntityFrameworkCore" , "8.0.0" , "net8.0" , [ ( null , [ ( "Microsoft.EntityFrameworkCore.Analyzers" , "8.0.0" ) , ( "Microsoft.Extensions.Caching.Memory" , "8.0.0" ) ] ) ] ) ,
1377
+ MockNuGetPackage . CreateSimplePackage ( "Microsoft.EntityFrameworkCore" , "8.0.0" , "net8.0" , [ ( null , [ ( "Microsoft.EntityFrameworkCore.Analyzers" , "8.0.0" ) , ( "Microsoft.Extensions.Caching.Memory" , "[ 8.0.0] " ) ] ) ] ) ,
1378
1378
MockNuGetPackage . CreateSimplePackage ( "Microsoft.EntityFrameworkCore.Analyzers" , "8.0.0" , "net8.0" ) ,
1379
1379
MockNuGetPackage . CreateSimplePackage ( "Microsoft.Extensions.Caching.Memory" , "8.0.0" , "net8.0" ) ,
1380
1380
] , tempDirectory . DirectoryPath ) ;
@@ -1627,16 +1627,13 @@ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory([
1627
1627
// initial packages
1628
1628
MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.CSharp.Workspaces" , "4.8.0" , "net8.0" , [ ( null , [ ( "Microsoft.CodeAnalysis.CSharp" , "[4.8.0]" ) , ( "Microsoft.CodeAnalysis.Common" , "[4.8.0]" ) ] ) ] ) ,
1629
1629
MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.CSharp" , "4.8.0" , "net8.0" , [ ( null , [ ( "Microsoft.CodeAnalysis.Common" , "[4.8.0]" ) ] ) ] ) ,
1630
- MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.Common" , "4.8.0" , "net8.0" , [ ( null , [ ( "System.Collections.Immutable" , "7.0.0" ) ] ) ] ) ,
1630
+ MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.Common" , "4.8.0" , "net8.0" , [ ( null , [ ( "System.Collections.Immutable" , "[ 7.0.0] " ) ] ) ] ) ,
1631
1631
MockNuGetPackage . CreateSimplePackage ( "System.Collections.Immutable" , "7.0.0" , "net8.0" ) ,
1632
1632
// available packages
1633
1633
MockNuGetPackage . CreateSimplePackage ( "System.Collections.Immutable" , "8.0.0" , "net8.0" ) ,
1634
1634
MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.CSharp.Workspaces" , "4.9.2" , "net8.0" , [ ( null , [ ( "Microsoft.CodeAnalysis.CSharp" , "[4.9.2]" ) , ( "Microsoft.CodeAnalysis.Common" , "[4.9.2]" ) ] ) ] ) ,
1635
1635
MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.CSharp" , "4.9.2" , "net8.0" , [ ( null , [ ( "Microsoft.CodeAnalysis.Common" , "[4.9.2]" ) ] ) ] ) ,
1636
- MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.Common" , "4.9.2" , "net8.0" , [ ( null , [ ( "System.Collections.Immutable" , "8.0.0" ) ] ) ] ) ,
1637
- //MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.CSharp.Workspaces", "4.10.0", "net8.0", [(null, [("Microsoft.CodeAnalysis.CSharp", "[4.10.0]"), ("Microsoft.CodeAnalysis.Common", "[4.10.0]")])]),
1638
- //MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.CSharp", "4.10.0", "net8.0", [(null, [("Microsoft.CodeAnalysis.Common", "[4.10.0]")])]),
1639
- //MockNuGetPackage.CreateSimplePackage("Microsoft.CodeAnalysis.Common", "4.10.0", "net8.0", [(null, [("System.Collections.Immutable", "8.0.0")])])
1636
+ MockNuGetPackage . CreateSimplePackage ( "Microsoft.CodeAnalysis.Common" , "4.9.2" , "net8.0" , [ ( null , [ ( "System.Collections.Immutable" , "[8.0.0]" ) ] ) ] ) ,
1640
1637
] , tempDirectory . DirectoryPath ) ;
1641
1638
1642
1639
var dependencies = new [ ]
@@ -1669,6 +1666,59 @@ await UpdateWorkerTestBase.MockNuGetPackagesInDirectory([
1669
1666
} ;
1670
1667
AssertEx . Equal ( expectedResolvedDependencies , actualResolvedDependencies ) ;
1671
1668
}
1669
+
1670
+ [ Fact ( Timeout = 120_000 ) ] // 2m
1671
+ public async Task DependencyConflictsCanBeResolved_TopLevelDependencyHasNewerVersionsThatDoNotPullUpTransitive ( )
1672
+ {
1673
+ using var tempDirectory = new TemporaryDirectory ( ) ;
1674
+ var projectPath = Path . Join ( tempDirectory . DirectoryPath , "project.csproj" ) ;
1675
+ await File . WriteAllTextAsync ( projectPath , """
1676
+ <Project Sdk="Microsoft.NET.Sdk">
1677
+ <PropertyGroup>
1678
+ <TargetFramework>net8.0</TargetFramework>
1679
+ </PropertyGroup>
1680
+ <ItemGroup>
1681
+ <PackageReference Include="Top.Level.Package" Version="1.41.0" />
1682
+ </ItemGroup>
1683
+ </Project>
1684
+ """ ) ;
1685
+ await UpdateWorkerTestBase . MockNuGetPackagesInDirectory ( [
1686
+ // initial packages
1687
+ MockNuGetPackage . CreateSimplePackage ( "Top.Level.Package" , "1.41.0" , "net8.0" , [ ( null , [ ( "Transitive.Package" , "6.0.0" ) ] ) ] ) ,
1688
+ MockNuGetPackage . CreateSimplePackage ( "Transitive.Package" , "6.0.0" , "net8.0" ) ,
1689
+ // available packages
1690
+ MockNuGetPackage . CreateSimplePackage ( "Top.Level.Package" , "1.45.0" , "net8.0" , [ ( null , [ ( "Transitive.Package" , "6.0.0" ) ] ) ] ) ,
1691
+ MockNuGetPackage . CreateSimplePackage ( "Transitive.Package" , "8.0.5" , "net8.0" ) ,
1692
+ ] , tempDirectory . DirectoryPath ) ;
1693
+
1694
+ var dependencies = new [ ]
1695
+ {
1696
+ new Dependency ( "Top.Level.Package" , "1.41.0" , DependencyType . PackageReference ) ,
1697
+ } . ToImmutableArray ( ) ;
1698
+ var update = new [ ]
1699
+ {
1700
+ new Dependency ( "Transitive.Package" , "8.0.5" , DependencyType . PackageReference ) ,
1701
+ } . ToImmutableArray ( ) ;
1702
+
1703
+ var resolvedDependencies = await MSBuildHelper . ResolveDependencyConflicts (
1704
+ tempDirectory . DirectoryPath ,
1705
+ projectPath ,
1706
+ "net8.0" ,
1707
+ dependencies ,
1708
+ update ,
1709
+ new ExperimentsManager ( ) { InstallDotnetSdks = true } ,
1710
+ new TestLogger ( )
1711
+ ) ;
1712
+ Assert . NotNull ( resolvedDependencies ) ;
1713
+ var actualResolvedDependencies = resolvedDependencies . Value . Select ( d => $ "{ d . Name } /{ d . Version } ") . ToArray ( ) ;
1714
+ var expectedResolvedDependencies = new [ ]
1715
+ {
1716
+ "Top.Level.Package/1.41.0" ,
1717
+ "Transitive.Package/8.0.5" ,
1718
+ } ;
1719
+ AssertEx . Equal ( expectedResolvedDependencies , actualResolvedDependencies ) ;
1720
+ }
1721
+
1672
1722
#endregion
1673
1723
1674
1724
[ Theory ]
0 commit comments