Постановка задачи: внедрить систему плагинов, которая позволяет перезаписывать связанные сборки (избегайте блокировки файлов). В .Net определенные сборки не могут быть выгружены, могут выгружаться только целые домены приложений.
Я публикую это, потому что когда я пытался решить проблему, каждое решение ссылалось на использование нескольких доменов приложений. Несколько доменов приложений очень сложно реализовать правильно, даже если они были спроектированы в начале проекта.
Кроме того, домены приложений не работали для меня, потому что мне нужно было передавать тип между доменами в качестве параметра для работы InvokeWorkflow в Speech Server worfklow. К сожалению, отправка типа по доменам приводит к внедрению сборки в локальный домен приложений.
Кроме того, это относится к IIS. В IIS есть параметр «Теневое копирование», позволяющий перезаписывать исполняемую сборку при ее загрузке в память. Проблема заключается в том, что (по крайней мере, под XP, тестирование на серверах производства 2003 не проводилось), когда вы программно загружаете сборку, теневая копия не работает (потому что вы загружаете DLL, а не IIS).