c# :Утилита для поиска циклических ссылок / компиляции в правильном порядке?

StackOverflow https://stackoverflow.com/questions/1669696

  •  13-09-2019
  •  | 
  •  

Вопрос

кто-нибудь знает хорошую утилиту или программу, которая запросит решение или каталог для всех проектов и сообщит вам, где находятся циклические ссылки и по порядку возможна компиляция..

Я помню, что видел один некоторое время назад, но нигде не могу его найти..

Это было полезно?

Решение

NDepend это отличный инструмент, который сделает это и многое другое.Может быть, это излишество для того, что вы хотите, но есть пробная версия, так что взгляните...

Другие советы

Я знаю, что это поздний ответ, но я обнаружил, что использование ответов GraemeF и tsilb не показало зависимости между двумя сборками.Это выглядит так, как если бы вы изменили порядок зависимостей на обратный (Сборка A ссылки B, но вы переключаете его на B ссылающийся A), это оставляет зависимость в порядке сборки.Чтобы решить эту проблему, откройте диалоговое окно Свойств вашего решения, перейдите к Общим свойствам, а затем к зависимостям проекта.Найдите Сборка A и удалите зависимость от Сборка B.Это позволит вам добавить ссылку в обычном режиме.

Вы могли бы изучить дерево зависимостей с помощью System.Отражение.При построении дерева, добавляя узел, вы должны проверить, являются ли какие-либо родительские элементы узла тем же проектом или сборкой, что и добавляемый вами.Если true, выдайте пользователю исключение.

Использование технических исключений, подобных этому, нормально, если вашими пользователями будут люди, которые знают, как работают ссылки на сборки и исключения - люди, подобные разработчикам :)

Если вы используете проект ссылки между проектами в вашем решении правильный порядок сборки будет определен автоматически Visual Studio (или MSBuild).Это, конечно, нарушается, если вы используете ссылки на сборку..Кроме того, Visual Studio остановит вас от добавления circular проект ссылки.

Я унаследовал гигантское решение Visual Studio с несколькими циклическими ссылочными путями.Я написал скрипт linqpad, чтобы помочь найти циклическую цепочку ссылок:

https://github.com/ronnieoverby/linqpad-utils/blob/master/Find%20circular%20references.linq

Моя реализация, вероятно, наивна, но для меня она сработала достаточно быстро.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top