Solution Dependency Viewer extension


In my previous blog, I introduced PDBProject Extension VS2103 as an alternative way to leverage the IDE features.  In this post, I would like to introduce Solution Dependency Viewer Extension as an easy to understand overview of your solution.  This extension parses each C++, C#, and VB projects in the solution and presents a graph showing projects as nodes and project references as edges. 

 Sample Solution Dependency in DGML

Dependency Graph of C++ Projects

The parsing of projects are done via MSBuild Framework.  Unlike the PDBProject that uses the Construction model, this extension uses the evaluation model.  It is slightly slower, however, it is required to get the full path to the Primary output and Projects references.  In one instance, a project reference had a macro that changed on between “Debug” and “Release” configuration.  If the construction model were used, the macro “$(Configuration)” would have not worked as a path.  Using the evaluation model solved this problem as the active solution configuration are passed into each project. 

Evaluation model also means, other information from each project could be represented in the graph.  In the comments below, I would like to hear from you.  One thought is to use number of source files to affect size of the node.  In an essence, larger projects would appear bigger in the graph.  Another thought is to show appx packaging information from each projects.

PS. Add and removing edges to also change the project system is already on the To-do list.


VC++ Project & Build

Felix Huang