Arnis: A no-brainer dependency tracker for .NET solutions

February 17, 2016 by rdagumampan

For for 10+ years of delivering software, I have attended these kind of questions many times?

  • What does it take migrate all projects into new Visual Studio IDE?
  • What are the different O/R mapping tools we used?
  • What mocking frameworks do we used in uni tests?
  • What open source tools did our company used? Legal would like to know!
In most cases I just have to do quick file search on branch folder, look at the project files, and at at some point I have written some dirty code to search. But not this time!! Not when we have to do this over 100+ solutions, with hundreds of projects and possibly thousands of dependencies. So while my wife was cooking, I have written a simple dependencies tracker of NET solutions. The project is available on GitHub as project Arnis.

Arnis is a no-brainer dependency tracker for .NET applications using elementary parsing algorithm.

At the moment, you can:

  • track applications built on Visual Studio from 2001 to 2015.
  • track target framework versions
  • track referenced assemblies from nuget packages and GAC/Referenced Assesmblies folder.
  • extensible to support new trackers and sinks.
How to use:
c:\arnis /wf:”<your_workspace_folder>” /sf:”<your_desired_csv_file>” /skf:<skip_these_folders>
Example (simple):
c:\arnis /wf:“c:\github\arnis” /sf:“c:\stackreport.arnis.csv”
Example (with skip file):
c:\arnis /wf:“c:\github\arnis” /sf:“c:\stackreport.arnis.csv” /skf:“c:\skip.txt” where skip.txt contains c:\github\arnis\bin\debug c:\github\arnis.unittests\bin\debug
How it looks:

How it works:

Trackers scans your target workspace folder and perform analysis of solutions and projects. Then the tracker’s results are consolidated to form a dependency tree . Sinks saves the result into specific format or destination. Currently, only CSV file format is supported.

Disclaimer:

Arnis cannot guarantee 100% reliability. This is not runtime dependency tracer. If you need more sophisticated runtime analysis I recommend Dependency Walker, ILSPy, NDepend  or Reflector  tools.

Next steps:

  • support web projects
  • create webapi sink so i can do automated analysis and reporting
By consistently monitoring the technology stack in our solutions portfolio  we can better plan for component upgrades, monitor 3rd party usage and licenses, consolidate component versions, and strategize decommissioning of projects and tools.

I am very excited with this pet project ;) Feel free to fork out, refactor or build new sinks.

© 2017 | About | Contact | Follow me on Twitter | Powerered by Hucore & Hugo