Как получить рекурсивный список зависимостей

Начиная с одной сборки, я хотел бы получить рекурсивный список всех зависимостей сборки. Я хочу, чтобы зависимость определялась манифестом сборки каждой сборки. Другими словами, я не хочу, чтобы зависимость сборки была исключена из списка только потому, что она «на самом деле не вызывается» или «фактически не используется».

Я попытался использовать Visual Studio Ultimate 2012 «Архитектура-> Создать график зависимостей». Диаграмма, которую она представляет, не показывает рекурсивно внешние зависимости, поэтому она не отвечает моим потребностям. Я также только что начал 14-дневную пробную версию NDepend. Он также не показывает мне рекурсивный график зависимостей.

Возможно, либо Visual Studio, либо NDepend могли показать мне рекурсивные зависимости, если на каждую из рекурсивных сборок действительно ссылался код. Но опять же, я не спрашиваю, есть ли путь выполнения, который связывает зависимости вместе, я просто хочу знать, что манифест для каждой сборки декларирует как зависимости.

Есть ли опция, которую мне не хватает в Visual Studio или NDepend?

Также было бы неплохо отфильтровать зависимости, чтобы сборки GAC не включались в рекурсию и список.


person Brent Arias    schedule 11.11.2014    source источник


Ответы (1)


Вы можете получить такой список, сначала щелкните правой кнопкой мыши сборку и запросите сборки, которые я использую (напрямую или косвенно).

NDepend Выберите сборки, используемые рекурсивно

Затем отображается запрос кода, в котором перечислены используемые сборки (рекурсивно) с глубиной использования.

NЗависимый список рекурсивно используемых сборок

Удобно, что вы можете экспортировать эти сборки в граф зависимостей, а затем лучше понять структуру кода:

График зависимостей сборок NDepend

Другими словами, я не хочу, чтобы зависимость сборки была исключена из списка только потому, что она "фактически не вызывается" или "фактически не используется".

Насколько я понимаю именно этот пункт не устраивает. NDepend учитывает зависимость между A и B, только если тип A использует тип B (или наоборот).

person Patrick from NDepend team    schedule 12.11.2014