Сортируем?
давайте перепишем это как "а зависит от б" (прямо или косвенно).
-----
Написать то напишем, а как считать будем?
Полной выкладки все одно нет - часть рекурсивных ссылок может быть в уже скомпилированных дллках... парсить все дллки на предмет ссылок?
Или... просто не включены в солюшен т.к. он строит только какую-то часть проектов в которых какие-то локальные проблемы.
напишете метод bool dependsOn (Projtct proj), в котором выследите, существует ли цепочка от а к б.
-----
Не надо писать метод - он будет очень сложным.
В общем случае, т.е. в случае когда решение находится только перебором вариантов, метод называется альфа-поиск. Олимпиадная задачка 85/86 годов...
В частном случае, типа имеющегося, можно построить матрицу смежности - там тоже простенько выяснится что есть зависимость... при неполных данных она довольно пуста и бесполезна.
НО! Мне не надо выяснять все эти моменты - за меня большую часть работы сделала Студия - циклических ссылок в проектах нет, остальное меня мало беспокоит.
Так что все что мне нужно - просто УПОРЯДОЧИТЬ список имеющихся проектов.
Двойная сортировка дает нужный результат без всяких сложностей.
но компаре ваше - все равно чушь.
-----
Но оно - примитивно простое, понятное и работает.
Чтобы понять проблему - посмотри на два проекта:'GPS.Order.ColumnsDefs' и 'CareyGlass.Interfaces'
Каким у тебя будет результат их сравнения? -1, 0, +1?
Если все еще не понятно - возьми другую пару: 'GPS.Order.ColumnsDefs' и 'GPS.Order.Factory'
И что будет? -1, 0, +1?
если найдете loop, бросите прерывание
-----
Да нет там циклов - не позволяет Студия добавить в солюшен проект вызывающий циклическую зависимость.