private Task <bool> EvaluateAllFilesAsync(IReadOnlySet <AbsolutePath> evaluationGoals, QualifierId qualifierId) { Contract.Assert(m_msBuildWorkspaceResolver.ComputedProjectGraph.Succeeded); ProjectGraphResult result = m_msBuildWorkspaceResolver.ComputedProjectGraph.Result; GlobalProperties qualifier = MsBuildResolverUtils.CreateQualifierAsGlobalProperties(qualifierId, m_context); IReadOnlySet <ProjectWithPredictions> filteredBuildFiles = result.ProjectGraph.ProjectNodes .Where(project => evaluationGoals.Contains(project.FullPath)) .Where(project => ProjectMatchesQualifier(project, qualifier)) .ToReadOnlySet(); var graphConstructor = new PipGraphConstructor( m_context, m_host, result.ModuleDefinition, m_msBuildResolverSettings, result.MsBuildLocation, result.DotNetExeLocation, m_frontEndName, m_msBuildWorkspaceResolver.UserDefinedEnvironment, m_msBuildWorkspaceResolver.UserDefinedPassthroughVariables); return(graphConstructor.TrySchedulePipsForFilesAsync(filteredBuildFiles, qualifierId)); }
private Task <bool> EvaluateAllFilesAsync(IReadOnlySet <AbsolutePath> evaluationGoals, QualifierId qualifierId) { Contract.Assert(m_msBuildWorkspaceResolver.ComputedProjectGraph.Succeeded); ProjectGraphResult result = m_msBuildWorkspaceResolver.ComputedProjectGraph.Result; // TODO: Filter out projects with non-matching qualifiers IReadOnlySet <ProjectWithPredictions> filteredBuildFiles = result.ProjectGraph.ProjectNodes .Where(project => evaluationGoals.Contains(project.FullPath)) .ToReadOnlySet(); var graphConstructor = new PipGraphConstructor(Context, FrontEndHost, result.ModuleDefinition, m_msBuildResolverSettings, result.MsBuildExeLocation, m_frontEndName); return(graphConstructor.TrySchedulePipsForFilesAsync(filteredBuildFiles, qualifierId)); }