private async Task <FallbackPackagePathResolver> GetPackagesPathResolverAsync(BuildIntegratedNuGetProject project) { // To get packagesPath for build integrated projects, first read the packageSpec to know if // RestorePackagesPath property was specified. If yes, then use that property to get packages path // otherwise use global user cache folder from _settings. var context = new DependencyGraphCacheContext(); var packageSpecs = await project.GetPackageSpecsAsync(context); var packageSpec = packageSpecs.Single(e => e.RestoreMetadata.ProjectStyle == ProjectStyle.PackageReference || e.RestoreMetadata.ProjectStyle == ProjectStyle.ProjectJson); var packagesPath = VSRestoreSettingsUtilities.GetPackagesPath(_settings, packageSpec); return(new FallbackPackagePathResolver(packagesPath, VSRestoreSettingsUtilities.GetFallbackFolders(_settings, packageSpec))); }
public static async Task <RestoreResult> RestoreProjectAsync( ISolutionManager solutionManager, BuildIntegratedNuGetProject project, DependencyGraphCacheContext context, RestoreCommandProvidersCache providerCache, Action <SourceCacheContext> cacheContextModifier, IEnumerable <SourceRepository> sources, Guid parentId, ILogger log, CancellationToken token) { if (project == null) { throw new ArgumentNullException(nameof(project)); } // Restore var specs = await project.GetPackageSpecsAsync(context); var spec = specs.Single(e => e.RestoreMetadata.ProjectStyle == ProjectStyle.PackageReference || e.RestoreMetadata.ProjectStyle == ProjectStyle.ProjectJson); // Do not restore global tools Project Style in VS. var result = await PreviewRestoreAsync( solutionManager, project, spec, context, providerCache, cacheContextModifier, sources, parentId, token); // Throw before writing if this has been canceled token.ThrowIfCancellationRequested(); // Write out the lock file and msbuild files var summary = await RestoreRunner.CommitAsync(result, token); RestoreSummary.Log(log, new[] { summary }); return(result.Result); }