Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }