public NuGetDownloader(TargetFramework targetFramework, string?outputDir = null, bool includePrerelease = false, bool recursive = false, bool extract = true, IEnumerable <string>?sources = null) : base(sources) { TargetFramework = targetFramework; Recursive = recursive; Extract = extract; IncludePrerelease = includePrerelease; outputDir ??= Directory.GetCurrentDirectory(); (_downloadDir, _extractDir) = extract ? (Path.Combine(Path.GetTempPath(), $"NuGetPackageDownloader.{Guid.NewGuid():N}"), outputDir) : (outputDir, null); _framework = targetFramework.ToNuGetFramework(); _project = new FolderNuGetProject(_downloadDir); var packageSourceProvider = new PackageSourceProvider(Settings); var sourceRepositoryProvider = new SourceRepositoryProvider(packageSourceProvider, ResourceProviders); _packageManager = new NuGetPackageManager(sourceRepositoryProvider, Settings, _downloadDir) { PackagesFolderNuGetProject = _project, }; }