public async Task RunAsync( NuGetFramework projectFramework, PackageConfiguration packageConfiguration, string bootstrapperPath, PackageIdentity bootstrapperPackage) { const string OldExtension = ".old"; var backupExePath = bootstrapperPath + OldExtension; if (File.Exists(backupExePath)) { try { File.Delete(backupExePath); } catch { } // best effort } var missingPackages = GetMissingPackages(packageConfiguration, packageManager.LocalRepository).ToList(); if (missingPackages.Count > 0) { async Task RestoreMissingPackages() { using var monitor = new PackageConfigurationUpdater( projectFramework, packageConfiguration, packageManager, bootstrapperPath, bootstrapperPackage); foreach (var package in missingPackages) { await packageManager.StartRestorePackage(package.Id, ParseVersion(package.Version), projectFramework); } }; packageManager.RestorePackages = true; try { await RunPackageOperationAsync(RestoreMissingPackages); } finally { packageManager.RestorePackages = false; } } var editorPackage = packageManager.LocalRepository.FindLocalPackage(bootstrapperPackage.Id); if (editorPackage == null || editorPackage.Identity.Version < bootstrapperPackage.Version) { async Task RestoreEditorPackage() { using var monitor = new PackageConfigurationUpdater( projectFramework, packageConfiguration, packageManager, bootstrapperPath, bootstrapperPackage); var package = await packageManager.StartInstallPackage(bootstrapperPackage.Id, bootstrapperPackage.Version, projectFramework); editorPackage = packageManager.LocalRepository.GetLocalPackage(package.GetIdentity()); }; await RunPackageOperationAsync(RestoreEditorPackage); } }
public PackageConfigurationPlugin(PackageConfigurationUpdater owner) { Owner = owner; }