private async Task DownloadToOfflineCacheAsync(DirectoryPath offlineCache, bool includePreviews) { var manifestPackagePaths = await _workloadManifestUpdater.DownloadManifestPackagesAsync(includePreviews, offlineCache); var tempManifestDir = Path.Combine(offlineCache.Value, "temp-manifests"); try { await _workloadManifestUpdater.ExtractManifestPackagesToTempDirAsync(manifestPackagePaths, new DirectoryPath(tempManifestDir)); var overlayManifestProvider = new TempDirectoryWorkloadManifestProvider(tempManifestDir, _sdkVersion.ToString()); _workloadResolver = WorkloadResolver.Create(overlayManifestProvider, _dotnetPath, _sdkVersion.ToString(), _userProfileDir); if (_workloadInstaller.GetInstallationUnit().Equals(InstallationUnit.Packs)) { var installer = _workloadInstaller.GetPackInstaller(); var packsToUpdate = GetUpdatablePacks(installer); foreach (var pack in packsToUpdate) { installer.DownloadToOfflineCache(pack, new DirectoryPath(_downloadToCacheOption), _includePreviews); } } else { throw new NotImplementedException(); } } finally { if (!string.IsNullOrWhiteSpace(tempManifestDir) && Directory.Exists(tempManifestDir)) { Directory.Delete(tempManifestDir, true); } } }
private async Task UseTempManifestsToResolvePacksAsync(DirectoryPath tempPath, bool includePreview) { var manifestPackagePaths = await _workloadManifestUpdater.DownloadManifestPackagesAsync(includePreview, tempPath); if (manifestPackagePaths == null || !manifestPackagePaths.Any()) { Reporter.WriteLine(LocalizableStrings.SkippingManifestUpdate); return; } await _workloadManifestUpdater.ExtractManifestPackagesToTempDirAsync(manifestPackagePaths, tempPath); var overlayProvider = new TempDirectoryWorkloadManifestProvider(tempPath.Value, _sdkVersion.ToString()); _workloadResolver = _workloadResolver.CreateOverlayResolver(overlayProvider); }