private static bool PackageNeedsInstalling(IEnumerable <IVsPackageMetadata> installedPackages, INugetPackageReference package) { var shouldInstall = false; // check whether we should install based on whether we have the current assembly and all it's DLLs var installedPackage = installedPackages.FirstOrDefault(x => string.Equals(x.Id, package.Name, StringComparison.OrdinalIgnoreCase)); if (installedPackage != null) { try { var requestedVersion = SemanticVersion.Parse(package.Version); var installedVersion = SemanticVersion.Parse(installedPackage.VersionString); if (requestedVersion.IsNewerThan(installedVersion)) { shouldInstall = true; } } catch (FormatException) { shouldInstall = true; } } else { shouldInstall = true; } return(shouldInstall); }
private static void InstallPackage(Project currentProject, IUnitTestGeneratorPackage generatorPackage, INugetPackageReference package) { try { generatorPackage.PackageInstaller.InstallPackage("All", currentProject, package.Name, package.Version, false); } catch (InvalidOperationException) { generatorPackage.PackageInstaller.InstallPackage("https://www.nuget.org/api/v2/", currentProject, package.Name, package.Version, false); } }