Я не уверен, что вы хотите с обновлением, хотите ли вы, чтобы новый обработчик событий применялся к старым спискам или только для новых списков.
Для обновления только новых списков вы можете поместить информацию о сборке в отдельный файл, прочитать этот файл в вашем методе FeatureActivation и применить новые значения. При обновлении все, что вам нужно сделать, это обновить отдельный файл конфигурации, и любая новая активация будет использовать новые значения и номера версий.
Если вам нужно обновить старые обработчики событий, вы можете выполнить аналогичную процедуру, но добавьте новый приемник функций перед удалением старых. Если вы сделаете это одним и тем же способом, время между добавлением нового обработчика и удалением старого будет минимальным, и вероятность того, что кто-либо добавит элемент в это точное время, будет близка к нулю. Если вы хотите полностью перейти к нулю, вы можете скрыть список или иметь дополнительный обработчик события ItemUpdated, который проверяет, выполняется ли обновление и, если это так, останавливает обновление.
Итак, вкратце:
Для новых списков, прочитайте конфигурацию сборки из внешнего файла
Для старых списков добавьте обновленную информацию о сборке непосредственно перед удалением старого обработчика.
.b