Инструмент для поиска зависимостей пространства имен в моем проекте? - PullRequest
2 голосов
/ 27 мая 2011

Dependency Walker , кажется, хороший инструмент для поиска зависимостей модуля (DLL).Но что, если у меня есть все эти «модули» в одной сборке, разделенные пространством имен, как показано ниже?

namespace Root.ModuleA { ... }
namespace Root.ModuleB { ... }
namespace Root.ModuleC { ... }

Существует ли инструмент, который может определять зависимости пространства имен внутри моей сборки, например, Root.ModuleC используетвещи в Root.ModuleA?

Ответы [ 4 ]

3 голосов
/ 27 мая 2011

Вы пробовали NDepend ?

2 голосов
/ 28 мая 2011

Чтобы завершить примечание tijmenvdk , предлагаются два правила по умолчанию (по запросам LINQ, CQLinq) относительно цикла зависимости пространства имен:

Вы можете попробовать эти правила в своем коде сейчас, NDepend предлагает бесплатную полнофункциональную пробную версию с ограниченным сроком действия . Затем вы можете экспортировать зависимости между пространствами имен в граф зависимостей или матрицу зависимостей (матрица лучше подходит, если у вас есть десятки пространств имен):

CQLinq query for namespaces dependency cycles

График зависимостей может выглядеть следующим образом (обратите внимание, что пространства имен в красном перепутаны в циклах):

Dependency Graph with namespaces dependency cycle

Матрица зависимостей может выглядеть следующим образом (обратите внимание на цикл, выделенный красным квадратом)

Dependency Matrix with namespaces dependency cycle

Чтобы продолжить, вы можете прочитать эти две книги по разделению кода .NET по сборкам и пространствам имен. Также недавно Хендри Лук написал полный пост в блоге об избавлении от циклов зависимостей пространств имен в своем проекте SheepAop.

Отказ от ответственности: я один из разработчиков инструмента

1 голос
/ 27 мая 2011

Visual Studio Architecture Explorer довольно неплохо справляется с этой задачей.Существует граф зависимостей, специфичный для пространств имен .

1 голос
/ 27 мая 2011

nDepend , вероятно, лучший инструмент для этой работы.

Представление матрицы зависимостей покажет вам все пространства имен и то, как они связаны друг с другом.

...