示例#1
0
        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);
            }
        }
示例#2
0
 public PackageConfigurationPlugin(PackageConfigurationUpdater owner)
 {
     Owner = owner;
 }