/// <summary> /// Search for packages using the searchText. /// </summary> /// <param name="windowFrame">A window frame that hosts the PackageManagerControl.</param> /// <param name="searchText">Search text.</param> // private void Search(System.Windows.Window windowFrame, string searchText) private void Search(vsShellInterop.IVsWindowFrame windowFrame, string searchText) { ThreadHelper.ThrowIfNotOnUIThread(); if (string.IsNullOrWhiteSpace(searchText)) { return; } var packageManagerControl = VsUtility.GetPackageManagerControl(windowFrame); if (packageManagerControl != null) { packageManagerControl.Search(searchText); } }
private PackageManagerControl GetProjectPackageManagerControl(string projectUniqueName) { return(NuGetUIThreadHelper.JoinableTaskFactory.Run(async() => { await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var uiShell = ServiceLocator.GetGlobalService <SVsUIShell, IVsUIShell>(); foreach (var windowFrame in VsUtility.GetDocumentWindows(uiShell)) { object docView; var hr = windowFrame.GetProperty( (int)__VSFPROPID.VSFPROPID_DocView, out docView); if (hr == VSConstants.S_OK && docView is PackageManagerWindowPane) { var packageManagerWindowPane = (PackageManagerWindowPane)docView; if (packageManagerWindowPane.Model.IsSolution) { // the window is the solution package manager continue; } var projects = packageManagerWindowPane.Model.Context.Projects; if (projects.Count() != 1) { continue; } IProjectContextInfo existingProject = projects.First(); IProjectMetadataContextInfo projectMetadata = await existingProject.GetMetadataAsync(CancellationToken.None); if (string.Equals(projectMetadata.Name, projectUniqueName, StringComparison.OrdinalIgnoreCase)) { var packageManagerControl = VsUtility.GetPackageManagerControl(windowFrame); if (packageManagerControl != null) { return packageManagerControl; } } } } return null; })); }
private async Task <IVsWindowFrame> FindExistingSolutionWindowFrameAsync() { await NuGetUIThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); var uiShell = await _asyncServiceProvider.GetServiceAsync <SVsUIShell, IVsUIShell>(); foreach (var windowFrame in VsUtility.GetDocumentWindows(uiShell)) { object property; var hr = windowFrame.GetProperty((int)__VSFPROPID.VSFPROPID_DocData, out property); var packageManagerControl = VsUtility.GetPackageManagerControl(windowFrame); if (hr == VSConstants.S_OK && property is IVsSolution && packageManagerControl != null) { return(windowFrame); } } return(null); }