«Выгрузка» надстройки состоит из двух частей.
Отмените регистрацию надстройки, чтобы она не «подключалась» к вашей программе (она не подключена к каким-либо событиям, содержит какие-либо блокировки ресурсов, не нужна или не вызывается основной программой в любое время и является не работает активно какой-либо код).
Выгрузите сборку, содержащую код расширения.
Первая часть полностью под вашим контролем - если ваш плагин подписывается на событие, то, когда вы просите его закрыть, он должен отписаться. Если ваша программа создает кнопки и пункты меню для надстройки, то она должна знать о них и иметь возможность удалить их при закрытии надстройки. и т.д.
Вы сами решаете, отвечает ли надстройка за это (в этом случае мошенническое дополнение может удалить все приложение, если оно не очищается должным образом), или должна ли инфраструктура надстройки обеспечить механизмы для подключения к основному приложению, чтобы оно могло очистить все ссылки между приложением и надстройкой автоматически (т. е. запустить надстройку в более безопасной «песочнице», где она менее способна отрицательно повлиять на стабильность приложения или других надстроек).
Как только надстройка закрывается, она становится полностью бездействующей, и тогда ее можно будет безопасно выгружать. (Однако, если вы не хотите обновлять dll надстройки во время работы программы, вы можете обнаружить, что вам даже не нужно выгружать надстройку - простое отключение может удовлетворить ваши потребности)