private bool FrameworksMatch(PackageDependencyGroup framework1, NuGet.PackageReference framework2) { bool majorMatch = framework1.TargetFramework.Version.Major == framework2.TargetFramework.Version.Major; bool minorMatch = framework1.TargetFramework.Version.Minor == framework2.TargetFramework.Version.Minor; return(majorMatch && minorMatch); }
public List <PackageDependency> GetPackageDependencies(NuGet.PackageReference packageDependency, PackageMetadataResource metadataResource) { List <PackageDependency> dependencies = new List <PackageDependency>(); //Gets all versions of package in package repository List <IPackageSearchMetadata> matchingPackages = new List <IPackageSearchMetadata>(metadataResource.GetMetadataAsync(packageDependency.Id, true, true, new Logger(), CancellationToken.None).Result); foreach (IPackageSearchMetadata matchingPackage in matchingPackages) { // Check if the matching package is the same as the version defined if (matchingPackage.Identity.Version.ToString() == packageDependency.Version.ToString()) { // Gets every dependency set in the package foreach (PackageDependencyGroup dependencySet in matchingPackage.DependencySets) { // Grab the dependency set for the target framework. We only care about majors and minors in the version if (FrameworksMatch(dependencySet, packageDependency)) { dependencies.AddRange(dependencySet.Packages); break; } } break; } } return(dependencies); }