У меня есть система .Net, которую могут расширить третьи стороны, ссылаясь на предоставленные сборки API.Мои проблемы связаны с обратной совместимостью, а именно я должен убедиться, что всякий раз, когда двоичные неразрывные изменения вносятся в поставляемые сборки API (например, добавляется метод):
- Плагины, созданные с использованием старой версии, по-прежнему должны работать при запуске новой версии.
- Однако плагины, созданные с использованием новой версии, не должны работать при запуске старой версии (в противном случае это может привести к сбоям во время выполнения, если плагин пытаетсявызовите метод, который не существует)
Из-за второго требования я не могу просто сохранить номера версий одинаковыми - единственный способ, которым я тогда узнаю о выполнении требования 1., - это использование перенаправление привязки , которое требует ведения длинного списка всех номеров предыдущих версий для всех сборок API.Это кажется подверженным ошибкам и утомительным.
Существуют ли альтернативные стратегии для обеспечения разумной обратной совместимости при работе с номерами версий сборки .Net?