views:

33

answers:

1

Background: I am developing an ASP.NET application with a server side plug in architecture. I define a set of interfaces in a pluginInterfaces .NET assembly.

Third party developers can develop a plugin assembly against these interfaces, place their assembly in a plugin folder, and it will be dynamically loaded to offer new functionality.

The plugins will reference the plugin interfaces assembly.

Problem: In the future I may update my pluginInterfaces assembly with new functionality, but it will remain 100% backward compatible (i.e. interfaces will not changed). However the pluginInterfaces assembly will have a new assembly version number.

I want (third party) plugin assemblies to just continue to work. But they will no longer find the pluginInterfaces assembly that they were built against. The pluginInterfaces assembly will have a strong name, and hence the plugins will look for the version with exact matching assembly version.

Question: What is the best way to achieve this? Is this what 'Publisher Policy' is for?

+1  A: 

You could try binding redirection.

Daniel Brückner
I think we will need to do this in the future - that is put our shared assemblies in the GAC and when we update them also install a policy dll into the GAC, to redirect references to old versions to the new version.
GarethOwen