diff --git a/src/NuGetForUnity/Editor/InstalledPackagesManager.cs b/src/NuGetForUnity/Editor/InstalledPackagesManager.cs index 565efe03..4bb1ef95 100644 --- a/src/NuGetForUnity/Editor/InstalledPackagesManager.cs +++ b/src/NuGetForUnity/Editor/InstalledPackagesManager.cs @@ -246,7 +246,7 @@ internal static void UpdateInstalledPackages() } /// - /// Checks if there are any packages inside the package install directory that are not listed inside the packages.config. + /// Finds and removes any installed packages detected that are not listed inside the packages.config. /// /// True if some packages are deleted. internal static bool RemoveUnnecessaryPackages() @@ -256,38 +256,17 @@ internal static bool RemoveUnnecessaryPackages() return false; } - var directories = Directory.GetDirectories(ConfigurationManager.NugetConfigFile.RepositoryPath, "*", SearchOption.TopDirectoryOnly); var somethingDeleted = false; - foreach (var folder in directories) + foreach (var installedPackage in InstalledPackages) { - var folderName = Path.GetFileName(folder); - if (folderName.StartsWith(".", StringComparison.Ordinal)) - { - // ignore folders whose name starts with a dot because they are considered hidden - continue; - } - - var nuspecPath = Directory.GetFiles(folder, "*.nuspec").FirstOrDefault(); - if (!File.Exists(nuspecPath)) - { - // ignore folder not containing a nuspec file - continue; - } - - var package = NugetPackageLocal.FromNuspecFile( - nuspecPath, - new NugetPackageSourceLocal( - "Nuspec file already installed", - Path.GetDirectoryName(nuspecPath) ?? throw new InvalidOperationException($"Failed to get directory from '{nuspecPath}'"))); - - var installed = PackagesConfigFile.Packages.Exists(packageId => packageId.Equals(package)); + var shouldBeInstalled = PackagesConfigFile.Packages.Exists(packageId => packageId.Equals(installedPackage)); - if (!installed) + if (!shouldBeInstalled) { somethingDeleted = true; - NugetLogger.LogVerbose("---DELETE unnecessary package {0}", folder); + NugetLogger.LogVerbose("---DELETE unnecessary package {0}", installedPackage.Id); - PackageContentManager.DeletePackageContentPackage(package); + PackageContentManager.DeletePackageContentPackage(installedPackage); } }