Да, размещение ваших интерфейсов в общей библиотеке является предпочтительным решением.Затем вам нужно будет только распространить эту библиотеку среди разработчиков плагинов, что можно считать легковесным, но плагин будет связан с точной версией интерфейса.
Другое решение - это решение на основе соглашения, где авторы плагиновимеют типы, которые «соответствуют» интерфейсу, например, имеют соответствующие методы в классе, на которые они могут указывать через файл конфигурации.Затем вы можете использовать отражение, генерацию IL и т. Д., Чтобы связать это с конкретным внутренним интерфейсом \ прокси.Преимущество заключается в том, что в этом случае плагины не привязаны к конкретной версии интерфейса, поэтому существует большая гибкость в управлении версиями.
Вы также можете рассмотреть возможность управления версиями, поддерживая все версии вашего интерфейса, например IPlugin_1, IPlugin_2 и т. Д.Затем разработчики плагинов могут реализовать любую версию, и вы сможете обрабатывать каждую версию.