NuGet ecosystem is very rich. There are many powerful NuGet servers and package management tools. What I don't find there though is an ability to track NuGet package dependencies.

There are two types of NuGet dependencies. One is dependency of NuGet package on other NuGet packages. This is specified in package manifest (nuspec) and used by NuGet core to install dependent packages on client machine. Another type of dependency is dependency of NuGet package on projects in which this package has been installed. This is the one I am talking about.

If all you have is a single solution, than Visual Studio "Manage NuGet Package for Solution.." is all which is required. Things aren't that simple if there are many source control repositories. Nobody wants monolithic apps. People pull common functionality into NuGet packages and share those packages among projects. Often each project goes into its own repository and thus number of dependencies between NuGet package and project grows especially considering the need to track not only internal by external (third-party) packages as well.

To deal with this problem I added a page to Code Vision which is my impact analysis tool. During nightly master build we collect dependencies between NuGet packages and projects and store those dependencies in SQL Server database. Dependency visualization is one dead simple page:


I described the main step of dependency collection process in my earlier post.