Skip to content
Finds dependencies in a solution, and creates an internal dependency graph
Branch: master
Clone or download
Latest commit c907b87 Aug 22, 2019
Type Name Latest commit message Commit time
Failed to load latest commit information.
SolutionDependencyAnalyzer Update nuget options Aug 22, 2019
SolutionDependencyAnalyzerTests First commit Aug 12, 2019
.gitignore Initial commit Aug 12, 2019
LICENSE First commit Aug 12, 2019
SolutionDependencyAnalyzer.sln Move editorconfig to root folder Aug 12, 2019
nuget.config Image creation is now optional Aug 15, 2019


There are two ways to use the tool: Command line or use the NuGet package in your project.

Command Line


dotnet tool install --global dependency-analyzer


dependency-analyzer <SolutionFullPath> <OutputPath>
  • -g or --create-graph-image : runs dot at the end of the process to create a png image of the dot graph generated. This option has a prerequisite: dot must be installed and in the PATH. To do so, you can run this command for Chocolatey: choco install graphviz or get dot there.

Files Created

This tool will create five files in the provided OutputPath:

  • contains the list of NuGet packages used by the projects in the solution, with their version.
  • will list the NuGet packages used by each project in the solution, with their version.
  • does the opposite: it will list the projects that use each package
  • is the dependency graph of the projects in the solution. SolutionDependencyAnalyzer also generates a png of that graph, projectDependencyGraph.png

Nuget Dependency


Add the dependency-analyzer NuGet package to your project


Create a DependencyAnalyzer and call it, with Solution containing the full solution path:

var dependencyAnalyzer = new DependencyAnalyzer(Solution);
await dependencyAnalyzer.AnalyzeAsync();

Now dependencyAnalyzer properties contain everything you need:

  • PackageResults contains the package ID as key, and its version as value
  • ProjectResults is a dictionary in which the key is a project, and the values are its project dependencies
  • PackagesByProject is a dictionary in which the key is a project, and the values are its package dependencies
  • ProjectsByPackage is a dictionary in which the key is a package, and the values are its project dependencies

You can also call the writers (MarkdownWriter and DotWriter) if you want to write the same fils as the comand line tool does.


This project was heavily inspired by dotnet-depends, and like dotnet-depends, it uses the amazing Buildalyzer

You can’t perform that action at this time.