diff --git a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs
index 5dfa34eb784..a578baf3d6a 100644
--- a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs
+++ b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core.Test/Discover/DiscoveryWorkerTests.Project.cs
@@ -401,5 +401,50 @@ public async Task NoDependenciesReturnedIfNoTargetFrameworkCanBeResolved()
Projects = []
});
}
+
+ [Fact]
+ public async Task DiscoverReportsTransitivePackageVersionsWithFourPartsForMultipleTargetFrameworks()
+ {
+ await TestDiscoveryAsync(
+ workspacePath: "",
+ files:
+ [
+ ("myproj.csproj", """
+
+
+ netstandard2.0;net8.0
+
+
+
+
+
+ """)
+ ],
+ expectedResult: new()
+ {
+ FilePath = "",
+ Projects = [
+ new()
+ {
+ FilePath = "myproj.csproj",
+ Dependencies = [
+ new("Microsoft.NET.Sdk", null, DependencyType.MSBuildSdk),
+ new("AWSSDK.S3", "3.7.307.29", DependencyType.PackageReference, TargetFrameworks: ["net8.0", "netstandard2.0"], IsDirect: true),
+ new("AWSSDK.Core", "3.7.303.27", DependencyType.Unknown, TargetFrameworks: ["net8.0", "netstandard2.0"], IsTransitive: true),
+ new("Microsoft.Bcl.AsyncInterfaces", "1.1.0", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
+ new("NETStandard.Library", "2.0.3", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
+ new("System.Runtime.CompilerServices.Unsafe", "4.5.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
+ new("System.Threading.Tasks.Extensions", "4.5.2", DependencyType.Unknown, TargetFrameworks: ["netstandard2.0"], IsTransitive: true),
+ ],
+ Properties = [
+ new("TargetFrameworks", "netstandard2.0;net8.0", "myproj.csproj"),
+ ],
+ TargetFrameworks = ["net8.0", "netstandard2.0"],
+ ReferencedProjectPaths = [],
+ }
+ ],
+ }
+ );
+ }
}
}
diff --git a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs
index 07c8603d957..1f51d445430 100644
--- a/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs
+++ b/nuget/helpers/lib/NuGetUpdater/NuGetUpdater.Core/Discover/SdkProjectDiscovery.cs
@@ -114,7 +114,7 @@ private static async Task> GetTransitiveDependencies(
transitiveDependencies[dependency.Name] = existingDependency with
{
// Revisit this logic. We may want to return each dependency instead of merging them.
- Version = SemanticVersion.Parse(existingDependency.Version!) > SemanticVersion.Parse(dependency.Version!)
+ Version = NuGetVersion.Parse(existingDependency.Version!) > NuGetVersion.Parse(dependency.Version!)
? existingDependency.Version
: dependency.Version,
TargetFrameworks = existingDependency.TargetFrameworks is not null && dependency.TargetFrameworks is not null