New site

13Apr11 is the new site for the DSM add-In. may not be able for much longer


You can now download the DSM Add-in recompiled to work with Reflector version 7 – see ┬áThe previous version compiled for version 6 is still available from the same link

… includes a couple of small bug fixes, plus you can now scroll around the matrix using the keyboard.

The shortcut keys are :

Arrow Keys : Move one cell at a time up, down, left or right

CTRL+ Arrow Keys: Move one page at a time up, dow, left or right

PageDown/PageUp: Move down/up one page at a time

End: Move to bottom right corner of matrix

Home: Move to top left corner of matrix

The version of the plugin available at is now a version compatible with version 5 of the Reflector.

My DSM Plugin for .NET uses some features of .Net framework v2 so it requires v2 of the runtime installed on the same machine. However on a friend’s machine we couldn’t get the plugin to work even though v2 was installed – Reflector kept running under v1 of the framework and so wouldn’t load my plugin. At first we didn’t understand as I had v1 and v2 of the framework installed as he did – it worked on my system but not his. As it turned out he had in fact 3 versions of the runtime installed: 2.0.50727, 1.1.4322 and 1.0.3705 (the version that I did not have). If you look at Reflector using Reflector you’ll see in the dissasembler that the target runtime is in fact V1.0.3705 :

.module Reflector.exe
.subsystem 0x0002
// MVID: {7C02BB23-FFA9-4C2E-95DB-BFE25D262FFD}
// Target Runtime Version: v1.0.3705

When a .NET application runs it will use the target runtime version specified in the assembly manifest if that version of the runtime is installed on the system. If it is not, the application will run under the most recent version. So how do we get Reflector to work with plugins that require V2 even though v1.0.3705 is installed ?

Well it turns out to be quite simple as we can bypass the default runtime selection behaviour and tell reflector which runtime to use. So if you have v1.0.3705 installed on your system you need to create a file in the same directory as Reflector.exe called Reflector.exe.cfg with the following content as shown below. This tells Reflector to run (in order of preference) v2.0.5077 if installed, else v1.1.4322 if installed, else v1.0.3705

<?xml version="1.0" ?>
<supportedRuntime version="v2.0.50727" />
<supportedRuntime version="v1.1.4322" />
<supportedRuntime version="v1.0.3705" />

More info can be found on MSDN

Finally …


A while ago I stumbled across an exciting tool – exciting, at least in terms of software architecture and software quality. Instead of using boxes and arrows, the Dependency Structure Matrix displays the architecture of an application in the form of a matrix – a much more condensed and accessible method of visualising module coupling.

At the time Lattix had a nice version for Java but not one for .NET – so I thought I wouldn’t mind having a go at it. Finally you can get to try it out by downloading it from my site

Please let me know what you think