public void UninstallPackage(Project project, string packageId, bool removeDependencies) { if (project == null) { throw new ArgumentNullException("project"); } if (String.IsNullOrEmpty(packageId)) { throw new ArgumentException(String.Format(CultureInfo.CurrentCulture, CommonResources.Argument_Cannot_Be_Null_Or_Empty, "packageId")); } IVsPackageManager packageManager = _packageManagerFactory.CreatePackageManager(_packageRepository, useFallbackForDependencies: false); IProjectManager projectManager = packageManager.GetProjectManager(project); EventHandler <PackageOperationEventArgs> packageReferenceRemovingHandler = (sender, e) => { _scriptExecutor.Execute( e.InstallPath, PowerShellScripts.Uninstall, e.Package, project, projectManager.GetTargetFrameworkForPackage(packageId), NullLogger.Instance); }; try { projectManager.PackageReferenceRemoving += packageReferenceRemovingHandler; packageManager.UninstallPackage(projectManager, packageId, version: null, forceRemove: false, removeDependencies: removeDependencies); } finally { projectManager.PackageReferenceRemoving -= packageReferenceRemovingHandler; } }
protected override bool ExecuteCore(PackageItem item) { // because we are not removing dependencies, we don't need to walk the graph to search for script files bool hasScript = item.PackageIdentity.HasPowerShellScript(new string[] { "uninstall.ps1" }); if (hasScript && !RegistryHelper.CheckIfPowerShell2Installed()) { throw new InvalidOperationException(Resources.Dialog_PackageHasPSScript); } try { RegisterPackageOperationEvents(_packageManager); _packageManager.UninstallPackage(ProjectManager, item.Id, version: null, forceRemove: false, removeDependencies: false, logger: this); } finally { UnregisterPackageOperationEvents(_packageManager); } return(true); }