void GetAllBuildableEntries(List <SolutionItem> list, ConfigurationSelector configuration, bool includeExternalReferences) { if (ParentSolution == null) { return; } SolutionConfiguration conf = ParentSolution.GetConfiguration(configuration); if (conf == null) { return; } foreach (SolutionFolderItem item in Items) { if (item is SolutionFolder) { ((SolutionFolder)item).GetAllBuildableEntries(list, configuration, includeExternalReferences); } else if ((item is SolutionItem) && conf.BuildEnabledForItem((SolutionItem)item) && ((SolutionItem)item).SupportsBuild()) { GetAllBuildableReferences(list, (SolutionItem)item, configuration, conf, includeExternalReferences, false); } } }
public ReadOnlyCollection <SolutionItem> GetAllBuildableEntries(ConfigurationSelector configuration, bool topologicalSort, bool includeExternalReferences) { var list = new List <SolutionItem> (); if (ParentSolution != null) { return(list.AsReadOnly()); } SolutionConfiguration conf = ParentSolution.GetConfiguration(configuration); if (conf == null) { return(list.AsReadOnly()); } var collected = new HashSet <SolutionItem> (); CollectBuildableEntries(collected, configuration, conf, includeExternalReferences); list.AddRange(collected); if (topologicalSort) { return(SolutionItem.TopologicalSort(list, configuration)); } else { return(list.AsReadOnly()); } }
public async Task <BuildResult> Clean(ProgressMonitor monitor, ConfigurationSelector configuration, OperationContext operationContext = null) { if (ParentSolution == null) { return(new BuildResult()); } SolutionConfiguration conf = ParentSolution.GetConfiguration(configuration); if (conf == null) { return(new BuildResult()); } ReadOnlyCollection <SolutionItem> allProjects; try { allProjects = GetAllBuildableEntries(configuration, true, true); } catch (CyclicDependencyException) { monitor.ReportError(GettextCatalog.GetString("Cyclic dependencies are not supported."), null); return(new BuildResult("", 1, 1)); } monitor.BeginTask(GettextCatalog.GetString("Cleaning Solution: {0} ({1})", Name, configuration.ToString()), allProjects.Count); try { return(await RunParallelBuildOperation(monitor, configuration, allProjects, (ProgressMonitor m, SolutionItem item) => { return item.Clean(m, configuration, operationContext); }, false)); } finally { monitor.EndTask(); } }
protected internal override void OnClean(IProgressMonitor monitor, ConfigurationSelector configuration) { if (ParentSolution == null) { return; } SolutionConfiguration conf = ParentSolution.GetConfiguration(configuration); if (conf == null) { return; } foreach (SolutionItem item in Items) { if (item is SolutionFolder) { item.Clean(monitor, configuration); } else if (item is SolutionEntityItem) { SolutionEntityItem si = (SolutionEntityItem)item; SolutionConfigurationEntry ce = conf.GetEntryForItem(si); if (ce.Build) { si.Clean(monitor, ce.ItemConfigurationSelector); } } else { item.Clean(monitor, configuration); } } }
/// <summary> /// Checks if this solution item has modified files and has to be built /// </summary> /// <returns> /// <c>true</c> if the solution item has to be built /// </returns> /// <param name='configuration'> /// Configuration for which to do the check /// </param> public bool NeedsBuilding(ConfigurationSelector configuration) { using (Counters.NeedsBuildingTimer.BeginTiming("NeedsBuilding check for " + Name)) { if (ParentSolution != null && this is SolutionEntityItem) { SolutionConfiguration sconf = ParentSolution.GetConfiguration(configuration); if (sconf != null && !sconf.BuildEnabledForItem((SolutionEntityItem)this)) { return(false); } } return(Services.ProjectService.GetExtensionChain(this).GetNeedsBuilding(this, configuration)); } }
protected override void OnClean(IProgressMonitor monitor, ConfigurationSelector configuration) { if (ParentSolution == null) { return; } SolutionConfiguration conf = ParentSolution.GetConfiguration(configuration); if (conf == null) { return; } try { monitor.BeginTask(GettextCatalog.GetString("Cleaning Solution: {0} ({1})", Name, configuration.ToString()), Items.Count); foreach (SolutionItem item in Items) { if (item is SolutionFolder) { item.Clean(monitor, configuration); } else if (item is SolutionEntityItem) { SolutionEntityItem si = (SolutionEntityItem)item; // ce can be null if you add items to the root solution folder which // causes them to be placed in an autogenerated 'Project Items' folder SolutionConfigurationEntry ce = conf.GetEntryForItem(si); if (ce != null && ce.Build) { si.Clean(monitor, ce.ItemConfigurationSelector); } } else { item.Clean(monitor, configuration); } monitor.Step(1); } } finally { monitor.EndTask(); } }
public Task <BuildResult> Clean(ProgressMonitor monitor, ConfigurationSelector configuration, OperationContext operationContext = null) { var slnConf = ParentSolution?.GetConfiguration(configuration); if (slnConf == null) { return(Task.FromResult(new BuildResult())); } //don't collect dependencies, CleanItems will do it var collected = new HashSet <SolutionItem> (); CollectBuildableEntries(collected, configuration, slnConf, false); return(ParentSolution.CleanItems( monitor, configuration, collected, operationContext, IsRoot ? GettextCatalog.GetString("Cleaning solution {0} ({1})", Name, configuration.ToString()) : null )); }
protected override void OnClean(IProgressMonitor monitor, ConfigurationSelector configuration) { if (ParentSolution == null) { return; } SolutionConfiguration conf = ParentSolution.GetConfiguration(configuration); if (conf == null) { return; } try { monitor.BeginTask(GettextCatalog.GetString("Cleaning Solution {0}", Name), Items.Count); foreach (SolutionItem item in Items) { if (item is SolutionFolder) { item.Clean(monitor, configuration); } else if (item is SolutionEntityItem) { SolutionEntityItem si = (SolutionEntityItem)item; SolutionConfigurationEntry ce = conf.GetEntryForItem(si); if (ce.Build) { si.Clean(monitor, ce.ItemConfigurationSelector); } } else { item.Clean(monitor, configuration); } monitor.Step(1); } } finally { monitor.EndTask(); } }