Как да получа диаграма на зависимостите между моите C# проекти

Имам доста сложно приложение, което е разделено на множество компоненти. Всеки компонент има файл с решение, който съдържа куп проекти. Така че ми харесва да мисля за това като за компонент, който има множество проекти/dll в него. Има и "общ" компонент. Всички останали компоненти зависят от "common". Така че компилирането върви по следния начин: "nant component1.compile" ще компилира "common" и след това ще компилира component1, тъй като component1 зависи от "common". С течение на времето "общото" стана доста голямо. Почти съм сигурен, че може да се раздели на няколко по-малки компонента. Тогава компонентите трябва да зависят само от някои от тези по-малки, разбити "общи". Надяваме се, че това ще намали времето за компилиране на различните компоненти.

И така въпрос: бих искал да визуализирам зависимостта между всички различни проекти в приложението, като същевременно маркирам към кой компонент принадлежи проектът. Как бихте направили това?


person Rohith    schedule 25.08.2010    source източник


Отговори (8)


Инструментът NDepend предлага графика на зависимост, съчетана с матрица на зависимост. По подразбиране ще получите графика на зависимостта на .NET сглобки и тя не е ограничена до сглобки само на едно VS решение. NDepend е интегриран във VS 2017, 2015, 2013, 2012, 2010 и може да показва всякакъв вид графика на вашия код, включително:

  • зависимости между сборките
  • графика на извикване на метод,
  • зависимости на пространства от имена във VS проект,
  • зависимости на типове в пространство от имена,
  • графика за наследяване на класове,
  • графика, представяща свързване на класове между 2 компонента

и т.н...

Всичко това е обяснено тук.

Диаграма на зависимостта на графиката на кода на NDepend

NDepend също така предлага матрица на структурата на зависимостта (DSM) и начин за зависимости на заявки с C# LINQ заявки.

person Patrick from NDepend team    schedule 01.09.2010

Можете да погледнете NDepend: http://www.ndepend.com/

редактирайте за добавяне:

Patrick Smacchia, водещ разработчик на NDepend, блогове тук: http://codebetter.com/blogs/patricksmacchia/default.aspx и е написал много по темата за компонентизацията, което може да ви бъде полезно.

person mathieu    schedule 25.08.2010

Ако имате достъп до Visual Studio 2010 Ultimate, можете да изберете Generate Dependency Graph от менюто Architecture.

Има инструкции в MSDN: Как да: Генерирате графики на зависимости за .NET код

person Richard Szalay    schedule 25.08.2010
comment
Изглежда, че прави графика на зависимост в рамките на решение. В моя случай всеки компонент е представен от едно решение. Бих искал да получа графика, показваща кой компонент зависи от коя част на друг компонент. Така че това са зависимости между решенията, но с маркер към кое решение принадлежи определена зависимост. - person Rohith; 25.08.2010

Бих опитал да го импортирам в UML инструмент, който може да изобрази диаграмата на зависимостта между модулите за мен.

Има няколко на пазара, както търговски, така и с отворен код. Вземете този, който ви дава най-много възможности за вашия бюджет.

person duffymo    schedule 25.08.2010
comment
Предлагате ли ръчно въвеждане на зависимостите в UML инструмент? Това е доста ръчна работа, която предпочитам да не правя. - person Rohith; 25.08.2010
comment
Не е необходимо да генерирате зависимостите, ако инструментът ще ги генерира вместо вас при импортиране. Не мога да говоря за възможностите на всеки инструмент. - person duffymo; 25.08.2010

Ако сте наред с информацията на ниво асемблиране, тогава трябва да погледнете Graph add- в популярен инструмент Reflector. Той предоставя графика на зависимост на ниво асемблиране и клас.

person VinayC    schedule 25.08.2010

Последната версия на Resharper също е в състояние да създаде референтна диаграма.

https://www.jetbrains.com/help/resharper/Architecture__Project_Dependencies_Exploration.html#

person Martin S    schedule 08.01.2020

разбирам ми беше предложено тази сутрин (:

http://www.scitools.com/

но честно казано не мога да дам подходящ отчет за него, тъй като е твърде скъпо за мен...

person tarrasch    schedule 25.08.2010

Разгледайте безплатния ми DSM плъгин за .NET Reflector, който можете да изтеглите от www.tom-carter.net

Той позволява два различни изгледа на вашите зависимости: модел на внедряване за намиране на зависимостите между модулите и архитектурен модел за показване на зависимостите между типовете.

Ако не предоставя визуално информацията, която търсите, можете да запишете модела в xml и да стартирате свой собствен скрипт върху данните.

Предимството на матрицата на зависимостите е, че е много по-лесно да се анализират зависимостите визуално, отколкото кутийките и линейните графики

Ако имате нужда от още помощ, позволете ми сега

[Актуализация] Този плъгин вече е наличен под формата на добавка за Visual Studio

person Tom Carter    schedule 25.08.2010