public virtual Task <IReadOnlyList <RestoreSummaryRequest> > CreateRequests( string inputPath, RestoreArgs restoreContext) { var paths = new List <string>(); var requests = new List <RestoreSummaryRequest>(); var lines = File.ReadAllLines(inputPath); var msbuildProvider = new MSBuildProjectReferenceProvider(lines); var entryPoints = msbuildProvider.GetEntryPoints(); // Create a request for each top level project with project.json foreach (var entryPoint in entryPoints) { if (entryPoint.PackageSpecPath != null && entryPoint.MSBuildProjectPath != null) { var request = Create( entryPoint, msbuildProvider, restoreContext, settingsOverride: null); requests.Add(request); } } return(Task.FromResult <IReadOnlyList <RestoreSummaryRequest> >(requests)); }
protected virtual RestoreSummaryRequest Create( ExternalProjectReference project, MSBuildProjectReferenceProvider msbuildProvider, RestoreArgs restoreContext, ISettings settingsOverride) { // Get settings relative to the input file var rootPath = Path.GetDirectoryName(project.PackageSpecPath); var settings = settingsOverride; if (settings == null) { settings = restoreContext.GetSettings(rootPath); } var globalPath = restoreContext.GetEffectiveGlobalPackagesFolder(rootPath, settings); var fallbackPaths = restoreContext.GetEffectiveFallbackPackageFolders(settings); var sources = restoreContext.GetEffectiveSources(settings); var sharedCache = _providerCache.GetOrCreate( globalPath, fallbackPaths, sources, restoreContext.CacheContext, restoreContext.Log); var request = new RestoreRequest( project.PackageSpec, sharedCache, restoreContext.Log, disposeProviders: false); restoreContext.ApplyStandardProperties(request); // Find all external references var externalReferences = msbuildProvider.GetReferences(project.MSBuildProjectPath).ToList(); request.ExternalProjects = externalReferences; // Determine if this needs to fall back to an older lock file format // Skip this if the arguments override the lock file version if (restoreContext.LockFileVersion == null) { request.LockFileVersion = LockFileUtilities.GetLockFileVersion(externalReferences); } // The lock file is loaded later since this is an expensive operation var summaryRequest = new RestoreSummaryRequest( request, project.MSBuildProjectPath, settings, sources); return(summaryRequest); }