Пример #1
0
        static void Insert <T> (int index, IList <T> allItems, List <T> sortedItems, bool[] inserted, bool[] triedToInsert, ConfigurationSelector solutionConfiguration) where T : SolutionItem
        {
            if (triedToInsert[index])
            {
                throw new CyclicDependencyException();
            }
            triedToInsert[index] = true;
            SolutionItem insertItem = allItems[index];

            foreach (SolutionItem reference in insertItem.GetReferencedItems(solutionConfiguration))
            {
                for (int j = 0; j < allItems.Count; ++j)
                {
                    SolutionItem checkItem = allItems[j];
                    if (reference == checkItem)
                    {
                        if (!inserted[j])
                        {
                            Insert(j, allItems, sortedItems, inserted, triedToInsert, solutionConfiguration);
                        }
                        break;
                    }
                }
            }
            sortedItems.Add((T)insertItem);
            inserted[index] = true;
        }
Пример #2
0
 static void CollectBuildableDependencies(HashSet <SolutionItem> collected, SolutionItem item, ConfigurationSelector configuration, SolutionConfiguration conf)
 {
     foreach (var it in item.GetReferencedItems(configuration))
     {
         if (collected.Contains(it) || !conf.BuildEnabledForItem(it))
         {
             continue;
         }
         collected.Add(it);
         CollectBuildableDependencies(collected, it, configuration, conf);
     }
 }
Пример #3
0
        void GetBuildableReferencedItems(Set <SolutionItem> visited, List <SolutionItem> referenced, SolutionItem item, ConfigurationSelector configuration)
        {
            if (!visited.Add(item))
            {
                return;
            }

            referenced.Add(item);

            foreach (SolutionItem ritem in item.GetReferencedItems(configuration))
            {
                GetBuildableReferencedItems(visited, referenced, ritem, configuration);
            }
        }
Пример #4
0
 void GetAllBuildableReferences(List <SolutionItem> list, SolutionItem item, ConfigurationSelector configuration, bool includeExternalReferences)
 {
     if (list.Contains(item))
     {
         return;
     }
     list.Add(item);
     if (includeExternalReferences)
     {
         foreach (SolutionItem it in item.GetReferencedItems(configuration))
         {
             GetAllBuildableReferences(list, it, configuration, includeExternalReferences);
         }
     }
 }
Пример #5
0
        void GetBuildableReferencedItems(List <SolutionItem> referenced, SolutionItem item, ConfigurationSelector configuration)
        {
            if (referenced.Contains(item))
            {
                return;
            }

            if (item.NeedsBuilding(configuration))
            {
                referenced.Add(item);
            }

            foreach (SolutionItem ritem in item.GetReferencedItems(configuration))
            {
                GetBuildableReferencedItems(referenced, ritem, configuration);
            }
        }
Пример #6
0
 void GetAllBuildableReferences(List <SolutionItem> list, SolutionItem item, ConfigurationSelector configuration, SolutionConfiguration conf, bool includeExternalReferences, bool isDirectReference)
 {
     if (list.Contains(item) || !conf.BuildEnabledForItem(item))
     {
         return;
     }
     // Skip unsupported projects which are not directly referenced by other (supported) projects
     if (!isDirectReference && item.IsUnsupportedProject)
     {
         return;
     }
     list.Add(item);
     if (includeExternalReferences)
     {
         foreach (var it in item.GetReferencedItems(configuration))
         {
             GetAllBuildableReferences(list, it, configuration, conf, includeExternalReferences, true);
         }
     }
 }