Browse Source

Fix installing, uninstalling and updating solution level packages.

Can now install, uninstall and update a package such as OpenCover
which is installed in the solution but not in any project.

PackageViewModel class needs to be refactored to remove the code
duplication.

Also NuGet creates the .nuget/NuGet.config file automatically for the
solution level package. However it does not remove it when the
solution level package is uninstalled which may be a problem with the
NuGet addin.
nuget-3.0-ctp
Matt Ward 11 years ago
parent
commit
3415c613af
  1. 85
      src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

85
src/AddIns/Misc/PackageManagement/Project/Src/PackageViewModel.cs

@ -326,7 +326,13 @@ namespace ICSharpCode.PackageManagement
installAction.IgnoreDependencies = false; installAction.IgnoreDependencies = false;
installAction.AllowPrereleaseVersions = parent.IncludePrerelease; installAction.AllowPrereleaseVersions = parent.IncludePrerelease;
GetInstallOperationsForSolutionPackage(solutionRepository, installAction, package); var packageManager = new PackageManager(
package.Repository,
solutionRepository.PackagePathResolver,
solutionRepository.FileSystem,
solutionRepository.Repository);
GetInstallOperationsForSolutionPackage(packageManager, solutionRepository, installAction, package);
if (LicensesAccepted()) { if (LicensesAccepted()) {
InstallPackageIntoSolution(solutionRepository, installAction, package); InstallPackageIntoSolution(solutionRepository, installAction, package);
@ -340,6 +346,7 @@ namespace ICSharpCode.PackageManagement
} }
void GetInstallOperationsForSolutionPackage( void GetInstallOperationsForSolutionPackage(
IPackageManager packageManager,
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
InstallPackageAction installAction, InstallPackageAction installAction,
IPackageFromRepository installPackage) IPackageFromRepository installPackage)
@ -350,14 +357,15 @@ namespace ICSharpCode.PackageManagement
DependencyVersion = DependencyVersion.Lowest, DependencyVersion = DependencyVersion.Lowest,
AllowPrereleaseVersions = installAction.AllowPrereleaseVersions AllowPrereleaseVersions = installAction.AllowPrereleaseVersions
}; };
resolver.AddOperation(NuGet.PackageAction.Install, package, null); var projectManager = new NullProjectManager(packageManager);
resolver.AddOperation(NuGet.PackageAction.Install, package, projectManager);
// var resolverFactory = new PackageOperationsResolverFactory(); // var resolverFactory = new PackageOperationsResolverFactory();
// var resolver = resolverFactory.CreateInstallPackageOperationResolver( // var resolver = resolverFactory.CreateInstallPackageOperationResolver(
// solutionRepository.Repository, // solutionRepository.Repository,
// installPackage.Repository, // installPackage.Repository,
// logger, // logger,
// installAction); // installAction);
// packageOperations = resolver.ResolveOperations(installPackage); packageOperations = resolver.ResolveActions();
} }
void InstallPackageIntoSolution( void InstallPackageIntoSolution(
@ -365,17 +373,10 @@ namespace ICSharpCode.PackageManagement
InstallPackageAction installAction, InstallPackageAction installAction,
IPackageFromRepository installPackage) IPackageFromRepository installPackage)
{ {
// var packageManager = new PackageManager( var executor = new ActionExecutor {
// installPackage.Repository, Logger = logger
// solutionRepository.PackagePathResolver, };
// solutionRepository.FileSystem, executor.Execute(packageOperations);
// solutionRepository.Repository);
//
// packageManager.InstallPackage(
// installPackage.Id,
// installPackage.Version,
// installAction.IgnoreDependencies,
// installAction.AllowPrereleaseVersions);
} }
protected virtual void TryUpdatingPackageInSolution() protected virtual void TryUpdatingPackageInSolution()
@ -386,7 +387,13 @@ namespace ICSharpCode.PackageManagement
updateAction.Package = package; updateAction.Package = package;
updateAction.AllowPrereleaseVersions = parent.IncludePrerelease; updateAction.AllowPrereleaseVersions = parent.IncludePrerelease;
GetUpdateOperationsForSolutionPackage(solutionRepository, updateAction, package); var packageManager = new PackageManager(
package.Repository,
solutionRepository.PackagePathResolver,
solutionRepository.FileSystem,
solutionRepository.Repository);
GetUpdateOperationsForSolutionPackage(packageManager, solutionRepository, updateAction, package);
if (LicensesAccepted()) { if (LicensesAccepted()) {
UpdateSolutionLevelPackage(solutionRepository, updateAction, package); UpdateSolutionLevelPackage(solutionRepository, updateAction, package);
@ -405,6 +412,7 @@ namespace ICSharpCode.PackageManagement
} }
void GetUpdateOperationsForSolutionPackage( void GetUpdateOperationsForSolutionPackage(
IPackageManager packageManager,
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
UpdatePackageAction updateAction, UpdatePackageAction updateAction,
IPackageFromRepository updatePackage) IPackageFromRepository updatePackage)
@ -415,20 +423,24 @@ namespace ICSharpCode.PackageManagement
// updatePackage.Repository, // updatePackage.Repository,
// logger, // logger,
// updateAction); // updateAction);
// packageOperations = resolver.ResolveOperations(updatePackage); var resolver = new ActionResolver {
Logger = logger,
AllowPrereleaseVersions = updateAction.AllowPrereleaseVersions,
IgnoreDependencies = !updateAction.UpdateDependencies
};
resolver.AddOperation(NuGet.PackageAction.Update, package, new NullProjectManager(packageManager));
packageOperations = resolver.ResolveActions();
} }
void UpdateSolutionLevelPackage( void UpdateSolutionLevelPackage(
ISolutionPackageRepository solutionRepository, ISolutionPackageRepository solutionRepository,
UpdatePackageAction updateAction, UpdatePackageAction updateAction,
IPackageFromRepository updatePackage) IPackageFromRepository updatePackage)
{ {
// var packageManager = new PackageManager( var executor = new ActionExecutor {
// updatePackage.Repository, Logger = logger
// solutionRepository.PackagePathResolver, };
// solutionRepository.FileSystem, executor.Execute(packageOperations);
// solutionRepository.Repository);
//
// packageManager.UpdatePackage( // packageManager.UpdatePackage(
// updatePackage.Id, // updatePackage.Id,
// updateAction.UpdateDependencies, // updateAction.UpdateDependencies,
@ -514,18 +526,29 @@ namespace ICSharpCode.PackageManagement
protected void TryUninstallingPackageFromSolution(IPackage removePackage) protected void TryUninstallingPackageFromSolution(IPackage removePackage)
{ {
try { try {
throw new NotImplementedException("UninstallingPackageFromSolution"); var solutionPackageRepository = PackageManagementServices.Solution.CreateSolutionPackageRepository();
// var solutionPackageRepository = PackageManagementServices.Solution.CreateSolutionPackageRepository(); var packageManager = new PackageManager(
// var packageManager = new PackageManager( solutionPackageRepository.Repository,
// solutionPackageRepository.Repository, solutionPackageRepository.PackagePathResolver,
// solutionPackageRepository.PackagePathResolver, solutionPackageRepository.FileSystem);
// solutionPackageRepository.FileSystem);
// var resolver = new ActionResolver {
Logger = logger,
DependencyVersion = DependencyVersion.Lowest,
ForceRemove = false,
RemoveDependencies = false
};
resolver.AddOperation(NuGet.PackageAction.Uninstall, removePackage, new NullProjectManager(packageManager));
packageOperations = resolver.ResolveActions();
var executor = new ActionExecutor {
Logger = logger
};
executor.Execute(packageOperations);
// packageManager.UninstallPackage(removePackage); // packageManager.UninstallPackage(removePackage);
// //
// solutionPackageRepository.Repository.RemovePackage(removePackage); // solutionPackageRepository.Repository.RemovePackage(removePackage);
// //
// packageManagementEvents.OnParentPackageUninstalled(removePackage); packageManagementEvents.OnParentPackageUninstalled(removePackage);
} catch (Exception ex) { } catch (Exception ex) {
ReportError(ex); ReportError(ex);

Loading…
Cancel
Save