I am working on an SDK. The goal of the SDK is to unify access to various hardware products. As such we have settled on a plugin architecture, using an abstract factory pattern for creation. The issue I have is that anytime the SDK changes I have to have the project teams recompile their plugins. Obviously this is necessary if the interfaces they are relying on, or implementing have changed. My issue is when I fix several bugs (but change no interfaces) they still need to recompile because the plugins are attempting to load a specific version of the SDK (based on the assemblies strong name). My options as I understand them are:
- Don't strongly name my SDK assemblies. This is not acceptable ultimately as many of our customers require that .Net assemblies be strongly named.
- Create a Publisher Policy. I suspect I will use this eventually, but I am not happy with the idea that two application installed on the same machine cannot use different versions of the SDK.
I understand that what I am looking for would get me DLL hell again, but in this case I feel I need that. Is there something I am missing?
Pat O