I remember starting a project for a Telco in C# before .Net was officially released. It was riddled with issues, but it made it easy to use COM+ as a means to hot swap 'plugins' to the core of the application. This allowed us to distribute one application, and have a configuration dynamically load which modules a user would need based on their role. The web wasn't very capable 15+ years ago, and this allowed for a single base to be maintained and yet shared modules to cut down on repetitive coding. You could do this with COM+ already, but manually working with IQueryInterface over a simple reflections added more complexity than was worth it. And when you needed to, you could easily make calls to the Windows API, so you could still do code injection to get past the parts when the language didn't support yet. And DLL hell was no longer so prevalent. I was told somewhat recently that it's still running in some capacity, which I'm glad of, because I remember stressing over how irresponsible it was to use an untested language and platform for such a project.