Недавно наткнулся на CodeProject’е на статью Марка Клифтона, посвященную поиску зависимостей между проектами в солюшне. К сожалению самого графа представленная программа не генерилровла и поэтому, будучи вдохновленным подходом Евгения Кучерука к визуализации содержимого Windsor-контейнера решил быстренько реализовать тот же функционал для зависимостей между проектами. Вот, собственно, что получилось.
Прежде всего нужен впечатлительный пример, поэтому я решил показать как выглядят проекты разных IoC-фреймворков (картинки здесь и далее кликабельны):
Unity:
StructureMap:
NInject:
Autofac:
Графы выше сформированы путем анализа проектных файлов и не включают “внешние” зависимости (зависимости вне солюшна). Сформированы они путем разбора .csproj-файлов, т.е. файлов проектов. Далее, когда вся информация получена в отдельный
Спрашивается – зачем это нужно? Точно так же, как IoC контейнер полезно отрендерить чтобы получить обозрение того, что на что завязано, так и обычный солюшн хочется иногда проанализировать на тему связанности. Как например делает тот же NDepend. Также иногда хочется просто увидеть все решение с высоты птичьего полета, и моя тулза поможет сделать именно это.
Ну что, не захотелось попробовать? Если да, то качайте GraphViz, а потом исходники. Интерфейс объяснять не буду, ибо там итак все понятно – все равно вы (как и я) будете кастомизировать программу для ваших целей, так что советую почитать документацию к формату dot. Удачи!
P.S.: Если сгенерите какой-то особо красивый граф солюшна – прошу постить ниже. Заранее спасибо.
Прежде всего нужен впечатлительный пример, поэтому я решил показать как выглядят проекты разных IoC-фреймворков (картинки здесь и далее кликабельны):
Unity:
StructureMap:
NInject:
Autofac:
Графы выше сформированы путем анализа проектных файлов и не включают “внешние” зависимости (зависимости вне солюшна). Сформированы они путем разбора .csproj-файлов, т.е. файлов проектов. Далее, когда вся информация получена в отдельный
Dictionary
, ее можно записать в формате .dot, и отрендерить используя GraphViz.Спрашивается – зачем это нужно? Точно так же, как IoC контейнер полезно отрендерить чтобы получить обозрение того, что на что завязано, так и обычный солюшн хочется иногда проанализировать на тему связанности. Как например делает тот же NDepend. Также иногда хочется просто увидеть все решение с высоты птичьего полета, и моя тулза поможет сделать именно это.
Ну что, не захотелось попробовать? Если да, то качайте GraphViz, а потом исходники. Интерфейс объяснять не буду, ибо там итак все понятно – все равно вы (как и я) будете кастомизировать программу для ваших целей, так что советую почитать документацию к формату dot. Удачи!
P.S.: Если сгенерите какой-то особо красивый граф солюшна – прошу постить ниже. Заранее спасибо.