I've continued my exploration of the .NET Framework tools. Today, the time came for SoapSuds.exe and MgmtClassGen.exe.
The first one is interesting, because SoapSuds.exe is simply a driver around a couple of classes called SoapSudsCode
and SoapSudsArgs
. Now, that by itself isn't anything out of the ordinary. What is interesting, though, is that both of these classes are not defined inside SoapSuds.exe or the .NET framework libraries, but instead in a little known assembly called, you guessed it, SoapSudsCode.dll.
So what? Well, I found prety intriguing the fact that this assembly is not installed anywhere on the filesystem but the GAC. Yep. Nowhere else. Now, I'm not quire sure why they went through all this trouble. Truth is, there's not much magic going on inside SoapSudsCode either; it's basically a large driver around the MetaData
class in the System.Runtime.Remoting.MetadataServices.MetaData
namespace.
MgmtClassGen.exe is actually a lot simpler. The entire application consists essentially of some code to parse the arguments and a call to the GetStronglyTypedClassCode()
method of the System.Management.ManagementClass
class.
All of this outlines one of my favourite things in .NET: Quite a few bunch of the development tools we use daily are nothing more than simple wrappers around functionality already provided in the base class libraries. It's just so rich! And it's all functionality you could take advantage of if you were to build your own tools!