Skip to content

mikehadlow/AsmSpy

Repository files navigation

NOTE AsmSpy is now being maintained by Oleg Sych. The official repo is now here: github.com/olegsych/AsmSpy.

Many thanks to Oleg for taking on AsmSpy!

AsmSpy

A simple command line tool to view assembly references.

Install

Install from Chocolatey package:

C:\> choco install asmspy

Or download AsmSpy as a .zip here. The .zip file contains AsmSpy.exe.

How it works

Simply run AsmSpy giving it a path to your bin directory (the folder where your project's assemblies live).

AsmSpy D:\Source\sutekishop\Suteki.Shop\Suteki.Shop\bin

It will output a list of all conflicting assembly references. That is where different assemblies in your bin folder reference different versions of the same assembly.

Switches:

Switch Description
all List all assemblies and references.
Supported formats: -a, --all
nonsystem Ignore system assemblies.
Supported formats: -n, --nonsystem
noconsole Do not show reference output on console.
Supported formats: -nc, --noconsole
silent Do not show any output, only warnings and errors will be shown.
Supported formats: -s, --silent
dgml Export dependency graph to a dgml file.
Supported formats: -dg <filename>
dgml version Show the assembly version on the label.
Supported formats: -dgsv, --dgshowversion
dot Export dependency graph to a DOT file.
Supported formats: -dt <filename>
xml Export dependency graph to a xml file.
Supported formats: -x <filename>
rsw Will only analyze assemblies if their referenced assemblies starts with the given value.
Supported formats: -rsw <string>, --referencedstartswith <string>
e Will exclude assemblies if they start with the given value. This option can be provided multiple times.
Supported formats: -e <string>, --exclude <string>
tree Write a dependency tree to the console.
Supported formats: -tr --tree
treedepth Limit tree depth (in compbinaison with --tree). Supported formats : -trd <int> --treedepth <int>
treelabel Add [Level n] label in tree view of dependencies. Supported formats -trl --treelabel
i Include subdirectories in search.
Supported formats: -i, --includesub
c Use the binding redirects of the given configuration file (Web.config or App.config)
Supported formats: -c <string>, --configurationFile <string>
f Whether to exit with an error code when AsmSpy detected Assemblies which could not be found
Supported formats. -f, --failOnMissing

Examples

To see a list of all assemblies and all references, just add the 'all' flag:

AsmSpy D:\Source\sutekishop\Suteki.Shop\Suteki.Shop\bin --all

To check only a single assembly provide a path to the file:

AsmSpy D:\Source\sutekishop\Suteki.Shop\Suteki.Shop\bin\Suteki.Shop.dll

To ignore system assemblies, add the 'nonsystem' flag.

The output looks something like this:

Reference: System.Runtime.Serialization
	3.0.0.0 by Microsoft.ServiceModel.Samples.XmlRpc
	3.0.0.0 by Microsoft.Web.Mvc
	4.0.0.0 by Suteki.Shop
Reference: System.Web.Mvc
	2.0.0.0 by Microsoft.Web.Mvc
	3.0.0.0 by MvcContrib
	3.0.0.0 by MvcContrib.FluentHtml
	3.0.0.0 by Suteki.Common
	2.0.0.0 by Suteki.Common
	3.0.0.0 by Suteki.Shop
	2.0.0.0 by Suteki.Shop
Reference: System.ServiceModel.Web
	3.5.0.0 by Microsoft.Web.Mvc
Reference: System.Web.Abstractions
	3.5.0.0 by Microsoft.Web.Mvc

You can see that System.Web.Mvc is referenced by 7 assemblies in my bin folder. Some reference version 2.0.0.0 and some version 3.0.0.0. I can now resolve any conflicts.

Color coding is used to more easily distinguish any problems.

  • Green - referenced assembly found locally, in the specified directory
  • Yellow - referenced assembly not found locally, but found installed in the Global Assembly Cache
  • Red - referenced assembly missing

Configure AsmSpy as an external tool in Visual Studio

Blog post here