I am responsible for debuggin minidumps from Windows Error Reporting on a .Net based shrink-wrapped desktop application installed on almost half a million PC's world wide, all running different OS versions and different patched versions of the .Net framework. To do this requires the matching version of the following 3 files
sos.dll
Mscorwks.dll
Mscordacwks.dll
I have had moderate success in the past downloading .msu files and extracting these files from them, but I am sure there must be an easier way.
My question is, is there a single repository where I can download the correct versions of these files so that I can debug the minidumps?
You need many more files that just those three to reliably debug / reproduce / analyze issues from the field. Basically, you need all of them (Windows, CLR, and (managed) .NET framework).
I'm not aware of any repository for just some files. You'd have to install the respective versions.
While you can install multiple versions of .NET CLR (1.1, 2.0, 4.0) on same box, and load the correct SOS.dll into WinDBG via the .loadby command, you would probably have to have multiple Windows installations for those Versions you support.
In addition, you also need the (public) symbols for those components, including the (private) symbols for your own application, to do any meaningful debugging.
Considering you have 3 versions of your application shipped and still supported, running on 4 operating system versions still supported by you (say Windows Vista SP1, Windows 7, Windows 7 SP1 and Windows 8), that gives you 12 combinations to have symbols for.
That is what symbol servers are for. You could use the public microsoft symbol server, but that (of course) doesn't contain symbols for your very own application.
Given the scope/size of the application you describe, I'd say it would be well in order to set up an in-house symbol server. That can keep all the symbols of the different versions of your app that are still in use by customers (a task not to take lightly).
Suggested reading:
You could also consider setting up a source server to allow you fetching the correct version of your sources, inside a debugging session, from source control.
As no one has been able to give me a real answer to this question, I will offer my "work-around". What I have been doing to date is to search the Microsoft support site to find the ms update package for the version of the framework, download it, and extract it using expand.exe. It is then possible to connect WinDbg to this version instead of the one that is running the machine you are debugging on. Here is a blogpost that explains the process in full detail http://sjbdeveloper.blogspot.com.au/2012/10/getting-correct-versions-of-net.html
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With