.NET Plugin DLL Hell (aka assembly binding nightmares)

I’ve worked on a few .NET WinForms applications that utilized a “plugin” model. You’ve probably seen similar apps out there, where a main application searches a directory for DLLs, and then tries to load them into the AppDomain, using some code like below: Assembly plugin = System.Reflection.Assembly.LoadFrom(pluginFileName); object pluginClass = Activator.CreateInstance(plugin.GetType("Plugin.PluginClass"));   This kind of…