We have an application supporting plugins via interfaces. On the other side plugins contain lots of logic and code in themselves. Plugins have dependencies (project and dll references) to application libraries beside the interfaces that application exposes.
Application core libraries have lots of reusable components that can be used in plugins. But if any of these components change in anyway, both the plugins and application are affected, as both have dependencies.
Is it acceptable to have plugins containing dependencies on the system, that plugins extend? What are the best practices on this issue?
Please share your thoughts and experiences.