Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I get a diagram of the dependencies between my C# projects

I have a fairly complex application which has been broken up into multiple components. Each component has a solution file which contains a bunch of projects. So I like to think of this as a component has multiple projects/dlls in it. There is also a "common" component. All the other components depend on "common". So a compile goes like this: "nant component1.compile" will compile "common" and then compile component1 since component1 depends on "common". Over time "common" has become quite big. I'm pretty sure it can be split into a few smaller components. Then components need to depend only on some of these smaller, broken up "common". This would hopefully cut down on compile time for the different components.

So question: I'd like to visualise the dependency between all the different projects in the application while also tagging which component the project belongs to. How would you do this?

like image 944
Rohith Avatar asked Aug 25 '10 09:08

Rohith


Video Answer


4 Answers

You could have a look at NDepend : http://www.ndepend.com/

edit to add:

Patrick Smacchia, lead developer of NDepend, blogs here: http://codebetter.com/blogs/patricksmacchia/default.aspx and has written much on the subject of componentisation, which you may find useful.

like image 126
mathieu Avatar answered Oct 07 '22 21:10

mathieu


If you have access to Visual Studio 2010 Ultimate, you can select Generate Dependency Graph from the Architecture menu.

There is a walkthrough on MSDN: How to: Generate Dependency Graphs for .NET Code

like image 43
Richard Szalay Avatar answered Oct 07 '22 19:10

Richard Szalay


The tool NDepend proposes a dependency graph coupled with a dependency matrix. By default you'll get a dependency graph of .NET assemblies and it is not restricted to assemblies of only one VS solution. NDepend is integrated in VS 2017, 2015, 2013, 2012, 2010 and it can show any kind of graph on your code including:

  • dependencies between assemblies
  • method call graph,
  • dependencies of namespaces inside a VS project,
  • dependencies of types inside a namespace,
  • classes inheritance graph,
  • graph representing classes coupling between 2 components

etc...

This is all explained here.

NDepend code graph dependency diagram

NDepend also proposes a dependency structure matrix (DSM) and a way to query dependencies with C# LINQ queries.

like image 1
Patrick from NDepend team Avatar answered Oct 07 '22 20:10

Patrick from NDepend team


I'd try importing it into a UML tool that could render the dependency diagram between modules for me.

There are several on the market, both commercial and open source. Get the one that gives you the most capability for your budget.

like image 1
duffymo Avatar answered Oct 07 '22 20:10

duffymo