private async Task <bool> ExecuteAsync(Common.ILogger log) { if (RestoreGraphItems.Length < 1 && !HideWarningsAndErrors) { log.LogWarning(Strings.NoProjectsProvidedToTask); return(true); } // Convert to the internal wrapper var wrappedItems = RestoreGraphItems.Select(MSBuildUtility.WrapMSBuildItem); var dgFile = MSBuildRestoreUtility.GetDependencySpec(wrappedItems); return(await BuildTasksUtility.RestoreAsync( dependencyGraphSpec : dgFile, interactive : Interactive, recursive : RestoreRecursive, noCache : RestoreNoCache, ignoreFailedSources : RestoreIgnoreFailedSources, disableParallel : RestoreDisableParallel, force : RestoreForce, forceEvaluate : RestoreForceEvaluate, hideWarningsAndErrors : HideWarningsAndErrors, restorePC : RestorePackagesConfig, log : log, cancellationToken : _cts.Token)); }
public override bool Execute() { #if DEBUG var debugRestoreTask = Environment.GetEnvironmentVariable("DEBUG_RESTORE_GRAPH_TASK"); if (!string.IsNullOrEmpty(debugRestoreTask) && debugRestoreTask.Equals(bool.TrueString, StringComparison.OrdinalIgnoreCase)) { Debugger.Launch(); } #endif if (RestoreGraphItems.Length < 1) { Log.LogWarning("Unable to find a project to restore!"); return(true); } var log = new MSBuildLogger(Log); log.LogDebug($"(in) RestoreGraphItems Count '{RestoreGraphItems?.Count() ?? 0}'"); log.LogDebug($"(in) RestoreGraphOutputPath '{RestoreGraphOutputPath}'"); log.LogDebug($"(in) RestoreRecursive '{RestoreRecursive}'"); // Convert to the internal wrapper var wrappedItems = RestoreGraphItems.Select(GetMSBuildItem); // Create file var dgFile = MSBuildRestoreUtility.GetDependencySpec(wrappedItems); // Add all child projects if (RestoreRecursive) { BuildTasksUtility.AddAllProjectsForRestore(dgFile); } var fileInfo = new FileInfo(RestoreGraphOutputPath); fileInfo.Directory.Create(); // Save file log.LogMinimal($"Writing {fileInfo.FullName}"); dgFile.Save(fileInfo.FullName); return(true); }
public override bool Execute() { if (RestoreGraphItems.Length < 1) { Log.LogWarning("Unable to find a project to restore!"); return(true); } var log = new MSBuildLogger(Log); log.LogDebug($"(in) RestoreGraphItems Count '{RestoreGraphItems?.Count() ?? 0}'"); log.LogDebug($"(in) RestoreGraphOutputPath '{RestoreGraphOutputPath}'"); log.LogDebug($"(in) RestoreRecursive '{RestoreRecursive}'"); // Convert to the internal wrapper var wrappedItems = RestoreGraphItems.Select(GetMSBuildItem); // Create file var dgFile = MSBuildRestoreUtility.GetDependencySpec(wrappedItems); // Add all child projects if (RestoreRecursive) { BuildTasksUtility.AddAllProjectsForRestore(dgFile); } var fileInfo = new FileInfo(RestoreGraphOutputPath); fileInfo.Directory.Create(); // Save file log.LogMinimal($"Writing {fileInfo.FullName}"); dgFile.Save(fileInfo.FullName); return(true); }
private async Task <bool> ExecuteAsync(Common.ILogger log) { if (RestoreGraphItems.Length < 1) { log.LogWarning(Strings.NoProjectsProvidedToTask); return(true); } // Set user agent and connection settings. ConfigureProtocol(); // Convert to the internal wrapper var wrappedItems = RestoreGraphItems.Select(MSBuildUtility.WrapMSBuildItem); //var graphLines = RestoreGraphItems; var providerCache = new RestoreCommandProvidersCache(); using (var cacheContext = new SourceCacheContext()) { cacheContext.NoCache = RestoreNoCache; cacheContext.IgnoreFailedSources = RestoreIgnoreFailedSources; // Pre-loaded request provider containing the graph file var providers = new List <IPreLoadedRestoreRequestProvider>(); var dgFile = MSBuildRestoreUtility.GetDependencySpec(wrappedItems); if (dgFile.Restore.Count < 1) { // Restore will fail if given no inputs, but here we should skip it and provide a friendly message. log.LogMinimal(Strings.NoProjectsToRestore); return(true); } // Add all child projects if (RestoreRecursive) { BuildTasksUtility.AddAllProjectsForRestore(dgFile); } providers.Add(new DependencyGraphSpecRequestProvider(providerCache, dgFile)); var defaultSettings = Settings.LoadDefaultSettings(root: null, configFileName: null, machineWideSettings: null); var sourceProvider = new CachingSourceProvider(new PackageSourceProvider(defaultSettings)); var restoreContext = new RestoreArgs() { CacheContext = cacheContext, LockFileVersion = LockFileFormat.Version, ConfigFile = MSBuildStringUtility.TrimAndGetNullForEmpty(RestoreConfigFile), DisableParallel = RestoreDisableParallel, GlobalPackagesFolder = RestorePackagesPath, Log = log, MachineWideSettings = new XPlatMachineWideSetting(), PreLoadedRequestProviders = providers, CachingSourceProvider = sourceProvider, AllowNoOp = !RestoreForce, HideWarningsAndErrors = HideWarningsAndErrors }; if (!string.IsNullOrEmpty(RestoreSources)) { var sources = MSBuildStringUtility.Split(RestoreSources); restoreContext.Sources.AddRange(sources); } if (restoreContext.DisableParallel) { HttpSourceResourceProvider.Throttle = SemaphoreSlimThrottle.CreateBinarySemaphore(); } _cts.Token.ThrowIfCancellationRequested(); var restoreSummaries = await RestoreRunner.RunAsync(restoreContext, _cts.Token); // Summary RestoreSummary.Log(log, restoreSummaries); return(restoreSummaries.All(x => x.Success)); } }
private async Task <bool> ExecuteAsync(Common.ILogger log) { if (RestoreGraphItems.Length < 1 && !HideWarningsAndErrors) { log.LogWarning(Strings.NoProjectsProvidedToTask); return(true); } // Set user agent and connection settings. ConfigureProtocol(); // Convert to the internal wrapper var wrappedItems = RestoreGraphItems.Select(MSBuildUtility.WrapMSBuildItem); //var graphLines = RestoreGraphItems; var providerCache = new RestoreCommandProvidersCache(); using (var cacheContext = new SourceCacheContext()) { cacheContext.NoCache = RestoreNoCache; cacheContext.IgnoreFailedSources = RestoreIgnoreFailedSources; // Pre-loaded request provider containing the graph file var providers = new List <IPreLoadedRestoreRequestProvider>(); var dgFile = MSBuildRestoreUtility.GetDependencySpec(wrappedItems); if (dgFile.Restore.Count < 1) { // Restore will fail if given no inputs, but here we should skip it and provide a friendly message. log.LogMinimal(Strings.NoProjectsToRestore); return(true); } // Add all child projects if (RestoreRecursive) { BuildTasksUtility.AddAllProjectsForRestore(dgFile); } providers.Add(new DependencyGraphSpecRequestProvider(providerCache, dgFile)); var restoreContext = new RestoreArgs() { CacheContext = cacheContext, LockFileVersion = LockFileFormat.Version, DisableParallel = RestoreDisableParallel, Log = log, MachineWideSettings = new XPlatMachineWideSetting(), PreLoadedRequestProviders = providers, AllowNoOp = !RestoreForce, HideWarningsAndErrors = HideWarningsAndErrors, RestoreForceEvaluate = RestoreForceEvaluate }; // 'dotnet restore' fails on slow machines (https://github.com/NuGet/Home/issues/6742) // The workaround is to pass the '--disable-parallel' option. // We apply the workaround by default when the system has 1 cpu. // This will fix restore failures on VMs with 1 CPU and containers with less or equal to 1 CPU assigned. if (Environment.ProcessorCount == 1) { restoreContext.DisableParallel = true; } if (restoreContext.DisableParallel) { HttpSourceResourceProvider.Throttle = SemaphoreSlimThrottle.CreateBinarySemaphore(); } _cts.Token.ThrowIfCancellationRequested(); var restoreSummaries = await RestoreRunner.RunAsync(restoreContext, _cts.Token); // Summary RestoreSummary.Log(log, restoreSummaries); return(restoreSummaries.All(x => x.Success)); } }