В SharePoint вы можете использовать Feature Receiver для выполнения некоторых действий, когда функция устанавливается/удаляется и т. д.
Приемник функций запускается из службы OWSTIMER, и процесс выглядит примерно так.
- .wsp (cab-файл) распаковывается и проверяется
- .dll перемещены в bin/gac
- получатели функций, отмеченные в манифесте, вызываются (могут быть только в GAC) службой
Однако OWSTIMER держит дескриптор dll, содержащий приемник функции, открытым.
Это означает, что при удалении функции Fusion переместит dll в каталог c:\windows\temp\ и сохранит ссылку. (Подробнее здесь и здесь)
Когда вы затем попытаетесь установить новую версию (версия файла сборки отличается, но версия сборки должна остаться прежней), OWSTIMER запустит СТАРЫЙ приемник функций.
Вы можете остановить это, перезапустив службу OWSTIMER, но это нецелесообразно в рабочей среде фермы, где может быть много веб-серверов.
Кто-нибудь знает обходные пути?