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);
}
}