public async Task <bool> EntityExistsAsync(string filePath) { if (IsDeferred) { return(await _workspaceService.EntityExists(filePath)); } else { return(File.Exists(filePath)); } }
public static async Task <DeferredProjectRestoreData> GetDeferredProjectsData( IDeferredProjectWorkspaceService deferredWorkspaceService, IEnumerable <string> deferredProjectsPath, CancellationToken token) { var packageReferencesDict = new Dictionary <PackageReference, List <string> >(new PackageReferenceComparer()); var packageSpecs = new List <PackageSpec>(); foreach (var projectPath in deferredProjectsPath) { // packages.config string packagesConfigFilePath = Path.Combine(Path.GetDirectoryName(projectPath), "packages.config"); bool packagesConfigFileExists = await deferredWorkspaceService.EntityExists(packagesConfigFilePath); if (packagesConfigFileExists) { // read packages.config and get all package references. var projectName = Path.GetFileNameWithoutExtension(projectPath); using (var stream = new FileStream(packagesConfigFilePath, FileMode.Open, FileAccess.Read)) { var reader = new PackagesConfigReader(stream); var packageReferences = reader.GetPackages(); foreach (var packageRef in packageReferences) { List <string> projectNames = null; if (!packageReferencesDict.TryGetValue(packageRef, out projectNames)) { projectNames = new List <string>(); packageReferencesDict.Add(packageRef, projectNames); } projectNames.Add(projectName); } } // create package spec for packages.config based project var packageSpec = await GetPackageSpecForPackagesConfigAsync(deferredWorkspaceService, projectPath); if (packageSpec != null) { packageSpecs.Add(packageSpec); } } else { // project.json string projectJsonFilePath = Path.Combine(Path.GetDirectoryName(projectPath), "project.json"); bool projectJsonFileExists = await deferredWorkspaceService.EntityExists(projectJsonFilePath); if (projectJsonFileExists) { // create package spec for project.json based project var packageSpec = await GetPackageSpecForProjectJsonAsync(deferredWorkspaceService, projectPath, projectJsonFilePath); packageSpecs.Add(packageSpec); } else { // package references (CPS or Legacy CSProj) var packageSpec = await GetPackageSpecForPackageReferencesAsync(deferredWorkspaceService, projectPath); if (packageSpec != null) { packageSpecs.Add(packageSpec); } } } } return(new DeferredProjectRestoreData(packageReferencesDict, packageSpecs)); }