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?