/// <summary> /// Get list of packages from the remote package source. Used for Get-Package -ListAvailable. /// </summary> /// <param name="searchString">The search string to use for filtering.</param> /// <param name="includePrerelease">Whether or not to include prerelease packages in the results.</param> /// <param name="handleError"> /// An action for handling errors during the enumeration of the returned results. The /// parameter is the error message. This action is never called by multiple threads at once. /// </param> /// <returns>The lazy sequence of package search metadata.</returns> protected IEnumerable <IPackageSearchMetadata> GetPackagesFromRemoteSource( string searchString, bool includePrerelease, Action <string> handleError) { var searchFilter = new SearchFilter(includePrerelease: includePrerelease); searchFilter.IncludeDelisted = false; var packageFeed = new MultiSourcePackageFeed(PrimarySourceRepositories, logger: null); var searchTask = packageFeed.SearchAsync(searchString, searchFilter, Token); return(PackageFeedEnumerator.Enumerate( packageFeed, searchTask, (source, exception) => { var message = string.Format( CultureInfo.CurrentCulture, Resources.Cmdlet_FailedToSearchSource, source, Environment.NewLine, ExceptionUtilities.DisplayMessage(exception)); handleError(message); }, Token)); }
/// <summary> /// Get list of packages from the remote package source. Used for Get-Package -ListAvailable. /// </summary> protected IEnumerable <IPackageSearchMetadata> GetPackagesFromRemoteSource(string searchString, bool includePrerelease) { var searchFilter = new SearchFilter { IncludePrerelease = includePrerelease, SupportedFrameworks = Enumerable.Empty <string>(), IncludeDelisted = false }; var packageFeed = new MultiSourcePackageFeed(PrimarySourceRepositories, logger: null); var searchTask = packageFeed.SearchAsync(searchString, searchFilter, Token); return(PackageFeedEnumerator.Enumerate(packageFeed, searchTask, Token)); }