The traditional way to approach this would be to use Dependency Injection to inject the appropriate DLL at runtime. The best way to do this is to not hardcode your type references, but rather you would work against interfaces which the concrete classes would implement. There are many benefits to doing this such as creating more testable objects, improving the loose cohesion of the system, etc.
I have CDO, it's OCD with the letters in the right order; just as they ruddy well should be
Forgive your enemies - it messes with their heads
My blog | My articles | MoXAML PowerToys | Onyx